|
get_parent_class
Retrieves the parent class name for object or class
(PHP 4, PHP 5)
Return ValuesReturns the name of the parent class of the class of which object is an instance or the name.
If called without parameter outside object, this function returns ChangeLog
ExamplesExample 381. Using get_parent_class()<?php The above example will output: I'm dad's son
See Also
Related Examples ( Source code ) » get_parent_class Examples ( Source code ) » get_parent_class Code Examples / Notes » get_parent_classeric dot brison
To return all ancestors class of an object function get_ancestors_class($classname) { $father = get_parent_class($classname); if ($father != "") { $ancestors = get_ancestors_class($father); $ancestors[] = $father; } return $ancestors; } example : ----------- Class C { } Class B extends C { } Class A extends B { } print_r (get_ancestors_class("a")); print_r (get_ancestors_class("b")); example result : --------------- Array ( [0] => c [1] => b ) Array ( [0] => c ) birkholz
tim at correctclick dot com wrote: <quote> A slightly more cryptic but faster get_ancestors function: <?php function get_ancestors ($class) { for ($classes[] = $class; $class = get_parent_class ($class); $classes[] = $class); return $classes; } ?> (The second part of the for is implicitly testing for $class != ""). Recursion is considerably slower than looping, so you probably want to use this function. Hope someone finds it useful. </quote> I would prefer this version, because it will create no duplicates: <?php function get_ancestors ($class) { $classes = array($class); while($class = get_parent_class($class)) { $classes[] = $class; } return $classes; } Greets, Dennis ?> matt-php
PHP (4 at least, dunno about 5) stores classnames in lower case, so: <?PHP class Foo { } class Bar extends Foo { } echo get_parent_class('Bar'); echo "\n"; echo get_parent_class('bar'); ?> will output: foo foo radu dot rendec
If the argument obj is a string and the class is not defined, then the function returns FALSE. If the argument obj is an object created from a class with no ancestors (or a string representing a class with no ancestors), then the function returns FALSE. tim
A slightly more cryptic but faster get_ancestors function: function get_ancestors ($class) { for ($classes[] = $class; $class = get_parent_class ($class); $classes[] = $class); return $classes; } (The second part of the for is implicitly testing for $class != ""). Recursion is considerably slower than looping, so you probably want to use this function. Hope someone finds it useful. |