|
get_parent_class
Retrieves the parent class name for object or class
(PHP 4, PHP 5)
Example 381. Using get_parent_class()<?php The above example will output: I'm dad's son 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. |