get_parent_class

(PHP 4, PHP 5)

get_parent_class -- 返回对象或类的父类名

描述

string get_parent_class ( mixed obj )

如果 obj 是对象,则返回对象实例 obj 所属类的父类名。

如果 obj 是字符串,则返回以此字符串为名的类的父类名。此功能是在 PHP 4.0.5 中增加的。

参见 get_class()is_subclass_of()


add a note add a note User Contributed Notes
birkholz at web dot de
07-Oct-2005 08:01
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 at DONT-SPAM-ME dot bitdifferent dot com
01-Nov-2004 11:52
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 at ines dot ro
07-Apr-2004 09:44
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 at correctclick dot com
06-Apr-2003 11:48
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.
eric dot brison at anakeen dot com
28-Jan-2002 08:14
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
)