&reftitle.examples; En este ejemplo, se comienza por definir una clase base así como una extensión de esta clase. La clase base describe un vegetal, si puede ser consumido y cuál es su color. La subclase Spinach añade un método para cocinarlo, y otro para determinar si está cocido. Definiciones de las Clases Vegetable edible = $edible; $this->color = $color; } public function isEdible() { return $this->edible; } public function getColor() { return $this->color; } } ?> ]]> Spinach cooked = true; } public function isCooked() { return $this->cooked; } } ?> ]]> A continuación, se crean dos objetos a partir de estas clases y se muestran información sobre ellos, incluyendo su clase padre. Asimismo, se definen funciones utilitarias, principalmente para obtener una presentación más agradable de las variables. test_script.php $val) { echo "\t$prop = $val\n"; } } function printMethods($obj) { $arr = get_class_methods(get_class($obj)); foreach ($arr as $method) { echo "\tfunction $method()\n"; } } function objectBelongsTo($obj, $class) { if (is_subclass_of($obj, $class)) { echo "Object belongs to class " . get_class($obj); echo ", a subclass of $class\n"; } else { echo "Object does not belong to a subclass of $class\n"; } } // instantiate 2 objects $veggie = new Vegetable(true, "blue"); $leafy = new Spinach(); // print out information about objects echo "veggie: CLASS " . get_class($veggie) . "\n"; echo "leafy: CLASS " . get_class($leafy); echo ", PARENT " . get_parent_class($leafy) . "\n"; // show veggie properties echo "\nveggie: Properties\n"; printProperties($veggie); // and leafy methods echo "\nleafy: Methods\n"; printMethods($leafy); echo "\nParentage:\n"; objectBelongsTo($leafy, Spinach::class); objectBelongsTo($leafy, Vegetable::class); ?> ]]> &examples.outputs; Un aspecto importante a notar en el ejemplo anterior es que el objeto $leafy es una instancia de la clase Spinach que es una subclase de Vegetable.