ГЛАВА 6. Объектно-ориентированные возможности РНР
Функции для работы с классами и объектами
В РНР существует несколько стандартных функций для работы с классами и объектами; эти функции рассматриваются в следующих разделах. Все они часто используются на практике, особенно в процессе разработки интерфейса, администрирования кода и диагностики ошибок.
get_class_methods()
Функция get_class_methods() возвращает массив имен методов класса с заданным именем. Синтаксис функции get_class_methods():
array get_class_methods(string имя_класса)
Простой пример использования get_class_methods() приведен в листинге 6.7.
Листинг 6.7. Получение списка методов класса
<?
...
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"
?>
Как видно из листинга 6.7, функция get_class_methods() позволяет легко получить информацию обо всех методах, поддерживаемых классом.
get_class_vars()
Функция get_class_vars() возвращает массив имен атрибутов класса с заданным именем. Синтаксис функции get_class_vars():
array get_class_vars(string имя_класса)
Пример использования get_class_vars() приведен в листинге 6.8.
Листинг 6.8. Получение списка атрибутов класса функцией get_class_vars()
<?
class Vehicle {
var $model;
var $current_speed;
}
class Airplane extends Vehicle {
var Swingspan;
}
$a_class = "Airplane";
$attribs = get_class_vars($a_class);
// Результат: $attribs = array( "wingspan", "model", "current_speed")
?>
Массив $attribs заполняется именами всех атрибутов класса Airplane.
get_object_vars()
Функция get_object_vars() возвращает ассоциативный массив с информацией обо всех атрибутах объекта с заданным именем. Синтаксис функции get_object_vars():
array get_object_vars(object имя_обьекта)
Пример использования функции get_object_vars() приведен в листинге 6.9.
Листинг 6.9. Получение информации о переменных объекта
<?
class Vehicle {
var Swheels;
}
class Land extends Vehicle {
var Sengine;
}
class car extends Land {
var $doors:
function car($doors, $eng, $wheels) {
$this->doors = $doors;
$this->engine = $eng;
$this->wheels = $wheels;
}
function get_wheels() {
return $this->wheels;
}
}
$toyota = new car(2,400,4);
$vars = get_object_vars($toyota);
while(list($key, $value) = each($vars)) :
print "$key ==> $value <br>";
endwhile;
// Выходные данные:
// doors ==> 2
// engine ==> 400
// wheels ==> 2
?>
Функция get_object_vars() позволяет быстро получить всю информацию об атрибутах конкретного объекта и их значениях в виде ассоциативного массива.
method_exists()
Функция method_exists() проверяет, поддерживается ли объектом метод с заданным именем. Если метод поддерживается, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис функции method_exists():
bool method_exi sts(object имя_обьекта. string имя_метода)
Пример использования метода method_exists() приведён в листинге 6.10.
Листинг 6.10. Проверка поддержки метода объектом при помощи функции method_exists()
<?
class Vehicle {
...
}
class Land extends Vehicle {
var $fourWheel;
function setFourWheel Drive() {
$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;
?>
В листинге 6.10 функция method_exists() проверяет, поддерживается ли объектом $car метод с именем setFourWheelDrive(). Если метод поддерживается, функция возвращает логическую истину и фрагмент выводит соответствующее сообщение. В противном случае возвращается FALSE и выводится другое сообщение.
get_class()
Функция get_class() возвращает имя класса, к которому относится объект с заданным именем. Синтаксис функции get_class():
string get_class(object имя_объекта);
Пример использования get_class() приведен в листинге 6.11.
Листинг 6.11. Получение имени класса функцией get_class()
<?
class Vehicle {
...
}
class Land extends Vehicle {
...
}
// Создать объект с именем $саr
$car = new Land;
// Переменной $class_a присваивается строка "Land"
$class_a = get_class($car);
?>
В результате переменной $class_a присваивается имя класса, на основе которого был создан объект $саr.
get_parent_class()
Функция get_parent_class() возвращает имя родительского класса(если он есть) для объекта с заданным именем. Синтаксис функции get_parent_dass():
string get_parent_class(object имя_обьекта);
Листинг 6.12 демонстрирует использование get_parent_class().
Листинг 6.12. Получение имени родительского класса функцией get_parent_class()
<?
class Vehicle {
...
}
class Land extends Vehicle {
...
}
// Создать объект с именем $саr
$саr = new Land;
// Переменной $parent присваивается строка "Vehicle"
$parent = get_parent_dass($car);
?>
Как и следовало ожидать, при вызове get_parent_class() переменной $parent будет присвоена строка "Vehicle".
is_subclass_of()
Функция is_subclass_of() проверяет, был ли объект создан на базе класса, имеющего родительский класс с заданным именем. Функция возвращает TRUE, если проверка дает положительный результат, и FALSE в противном случае. Синтаксис функции is_subclass_of():
bool is_subclass_of(object объект, string имя_класса)
Использование is_subclass_of() продемонстрировано в листинге 6.13.
Листинг 6.13. Использование функции is_subdass_of()
<?
class Vehicle {
...
}
class Land extends Vehicle {
...
}
$auto = new Land;
// Переменной $is_subclass присваивается TRUE
$is_subclass = is_subclass_of($auto, "Vehicle");
?>
В листинге 6.13 переменной $is_subclass() присваивается признак того, принадлежит ли объект $auto к субклассу родительского класса Vehicle. В приведенном фрагменте $auto относится к классу Vehicle; следовательно, переменной $is_subclass() будет присвоено значение TRUE.
get_declared_classes()
Функция get_declared_classes() возвращает массив с именами всех определенных классов(листинг 6.14). Синтаксис функции get_declared_classes():
array get_declared_classes()
Листинг 6.14. Получение списка классов функцией get_declared_classes()
<?
class Vehicle {
...
}
class Land extends Vehicle {
...
}
$declared_classes = get_declared_classes();
// Результат: $declared_classes = array("Vehicle", "Land")
?>
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|