В РНР существует несколько стандартных функций для работы с классами и объектами. Рассмотрим некоторые функции для работы с классами и объектами в контексте PHP4.
get_class_methods()
Функция get_class_methods() возвращает массив имен методов класса с заданным именем. Синтаксис функции get_class_methods():
array get_class_methods (string имя_класса)
Простой пример использования get_class_methods() - Получение списка методов класса:
... class Airplane extends Vehicle { var $wingspan; function setWingSpan($wingspan) { $this->wingspan = $wingspan; }
function getWingSpan() { return $this->wingspan; } }
$cls_methods = get_class_methods(Airplane); // Массив $cls_methods содержит имена всех методов, // объявленных в классах "Airplane" и "Vehicle" ?>
Как видно из листинга, функция get_class_methods() позволяет легко получить информацию обо всех методах, поддерживаемых классом.
get_class_vars()
Функция get_class_vars() возвращает массив имен атрибутов класса с заданным именем. Синтаксис функции get_class_vars():
array get_class_vars (string имя_класса)
Пример использования функции get_class_vars() - получение списка атрибутов (свойств) класса:
class Vehicle { var $model; var $current_speed; }
class Airplane extends Vehicle { var $Swingspan; }
В рассмотренном примере массив $attribs заполняется именами всех атрибутов класса Airplane.
get_object_vars()
Функция get_object_vars() возвращает ассоциативный массив с информацией обо всех атрибутах объекта с заданным именем. Синтаксис функции get_object_vars():
array get_object_vars (object имя_обьекта)
Пример использования функции get_object_vars() - получение информации о переменных объекта:
class Vehicle { var $wheels; }
class Land extends Vehicle { var $engine; }
class car extends Land { var $doors; function car($doors, $eng, $wheels) { $this->doors = $doors; $this->engine = $eng; $this->wheels = $wheels; }
Функция get_object_vars() позволяет быстро получить всю информацию об атрибутах конкретного объекта и их значениях в виде ассоциативного массива.
method_exists()
Функция method_exists() проверяет, поддерживается ли объектом метод с заданным именем. Если метод поддерживается, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис функции method_exists():
Пример использования метода method_exists() - проверка поддержки метода объектом:
class Vehicle { // ... }
class Land extends Vehicle { var $fourWheel;
function setFourWheelDrive() { $this->fourWeel = 1; }
} // Создать объект с именем $саr $car = new Land; // Если метод "fourWheelDrive" поддерживается классом "Land" // или "Vehicle", вызов method_exists возвращает TRUE; // в противном случае возвращается FALSE. // В данном примере method_exists() возвращает TRUE. if (method_exists($car, "setfourWheelDrive")) : print "This car is equipped with 4-wheel drive"; else : print "This car is not equipped with 4-wheel drive"; endif; ?>
В рассмотренном примере функция method_exists() проверяет, поддерживается ли объектом $car метод с именем setFourWheelDrive(). Если метод поддерживается, функция возвращает логическую истину и фрагмент выводит соответствующее сообщение. В противном случае возвращается FALSE и выводится другое сообщение.
get_class()
Функция get_class() возвращает имя класса, к которому относится объект с заданным именем. Синтаксис функции get_class():
string get_class(object имя_объекта);
Пример использования get_class() - получение имени класса:
class Vehicle { }
class Land extends Vehicle { }
// Создаем объект с именем $саr: $car = new Land; // Переменной $class_a присваивается строка "Land": $class_a = get_class($car); echo $class_a; ?>
В рассмотренном примере переменной $class_a присваивается имя класса, на основе которого был создан объект $саr.
get_parent_class()
Функция get_parent_class() возвращает имя родительского класса (если он есть) для объекта с заданным именем. Синтаксис функции get_parent_dass():
string get_parent_class (object имя_обьекта);
Пример получения имени родительского класса функцией get_parent_class():
class Vehicle { //... }
class Land extends Vehicle { //... }
// Создаем объект с именем $саr: $саr = new Land; // Переменной $parent присваивается строка "Vehicle": $parent = get_parent_class($car); ?>
При вызове get_parent_class() переменной $parent будет присвоена строка "Vehicle".
is_subclass_of()
Функция is_subclass_of() проверяет, был ли объект создан на базе класса, имеющего родительский класс с заданным именем. Функция возвращает TRUE, если проверка дает положительный результат, и FALSE в противном случае. Синтаксис функции is_subclass_of():
class Land extends Vehicle { //... } $auto = new Land; // Переменной $is_subclass присваивается TRUE $is_subclass = is_subclass_of($auto, "Vehicle"); ?>
В рассмотренном примере переменной $is_subclass() присваивается признак того, принадлежит ли объект $auto к субклассу родительского класса Vehicle. В приведенном фрагменте $auto относится к классу Vehicle; следовательно $is_subclass() будет присвоено значение TRUE.
get_declared_classes()
Функция get_declared_classes() возвращает массив с именами всех определенных классов. Синтаксис функции get_declared_classes():
array get_declared_classes()
Пример получения списка классов функцией get_declared_classes():
Мы рассмотрели лишь некоторые основные функции, предназначенные для работы с классами и объектами PHP. Для ознакомления с полным перечнем таких функций обратитесь к справочнику функций PHP.