} } class Child extends Introspection { public function description() { echo "I'm " . get_class($this), " class.n" . "\n"; echo "I'm " . get_parent_class($this), "'s child.n" . "\n"; // create object from class name $cls = get_parent_class($this); // return class name $parent_cls = new $cls(); // init class object echo "My description " . $parent_cls->description(); // retrieve class methods } } if (class_exists("Introspection")) { $introspection = new Introspection(); echo "The class name is: " . get_class($introspection) . "n" . "\n"; $introspection->description(); } if (class_exists("Child")) { $child = new Child(); $child->description(); if (is_subclass_of($child, "Introspection")) { echo "Yes, " . get_class($child) . " is a subclass of Introspection.n" . "\n"; } else { echo "No, " . get_class($child) . " is not a subclass of Introspection.n" . "\n"; } }