&reftitle.examples; В приведённом ниже примере, мы сначала определим базовый класс и класс его наследующий. Базовый класс описывает овощ: съедобен ли он и какого цвета. Дочерний класс Spinach добавляет метод приготовления овоща и проверки, был ли он уже приготовлен. Определения классов Овощ edible = $edible; $this->color = $color; } public function isEdible() { return $this->edible; } public function getColor() { return $this->color; } } ?> ]]> Шпинат cooked = true; } public function isCooked() { return $this->cooked; } } ?> ]]> Теперь мы создадим по объекту каждого класса и распечатаем информацию о них, включая порядок их наследования. Также мы объявим несколько функций-утилит, главным образом для удобного вывода результатов. test_script.php $val) { echo "\t$prop = $val\n"; } } function printMethods($obj) { $arr = get_class_methods(get_class($obj)); foreach ($arr as $method) { echo "\tфункция $method()\n"; } } function objectBelongsTo($obj, $class) { if (is_subclass_of($obj, $class)) { echo "Объект принадлежит к классу " . get_class($obj); echo ", подкласс $class\n"; } else { echo "Объект не принадлежит к подклассу $class\n"; } } // создание 2 объектов $veggie = new Vegetable(true, "blue"); $leafy = new Spinach(); // вывод информации об объектах echo "вегетарианский: CLASS " . get_class($veggie) . "\n"; echo "листовой: CLASS " . get_class($leafy); echo ", PARENT " . get_parent_class($leafy) . "\n"; // показать вегетарианские свойства echo "\nвегетарианский: Свойства\n"; printProperties($veggie); // и листовые методы echo "\nleafy: Методы\n"; printMethods($leafy); echo "\nПроисхождение:\n"; objectBelongsTo($leafy, Spinach::class); objectBelongsTo($leafy, Vegetable::class); ?> ]]> &examples.outputs; Важно заметить, что, в приведённом выше примере, объект $leafy - экземпляр класса Spinach, который наследует класс Vegetable.