Пример 2. test_script.php
<pre> <?php
include "classes.inc";
// функции-утилиты
function print_vars($obj) { $arr = get_object_vars($obj); while (list($prop, $val) = each($arr)) echo "\t$prop = $val\n"; }
function print_methods($obj) { $arr = get_class_methods(get_class($obj)); foreach ($arr as $method) echo "\tfunction $method()\n"; }
function class_parentage($obj, $class) { if (is_subclass_of($GLOBALS[$obj], $class)) { echo "Object $obj belongs to class " . get_class($$obj); echo " a subclass of $class\n"; } else { echo "Object $obj does not belong to a subclass of $class\n"; } }
// создание экземпляров объектов
$veggie = new Vegetable(true, "blue"); $leafy = new Spinach();
// распечатка информации об объектах echo "veggie: CLASS " . get_class($veggie) . "\n"; echo "leafy: CLASS " . get_class($leafy); echo ", PARENT " . get_parent_class($leafy) . "\n";
// показать свойства объекта класса Spinach echo "\nveggie: Properties\n"; print_vars($veggie);
// и методы объекта базового класса Vegetable echo "\nleafy: Methods\n"; print_methods($leafy);
echo "\nParentage:\n"; class_parentage("leafy", "Spinach"); class_parentage("leafy", "Vegetable"); ?> </pre>
|
Важно заметить, что в приведенном выше примере объект
$leafy -- экземпляр класса
Spinach, который наследует класс
Vegetable,
вследствие чего последний пункт скрипта выведет:
[...]
Parentage:
Object leafy does not belong to a subclass of Spinach
Object leafy belongs to class spinach a subclass of Vegetable |