get_parent_class

(PHP 4, PHP 5)

get_parent_class -- Возвращает имя класса базового для объекта или класса

Описание

string get_parent_class ( mixed obj )

Если obj, функция возвращает имя класса базового для класса, экземпляром которого является obj.

Если obj является строкой, функция возвращает имя класса базового для класса с этим именем. Эта возможность была добавлена в PHP 4.0.5.

Пример 1. Пример использования get_parent_class()

<?php

class dad {
   function
dad()
   {
  
// имплементация чего-либо
  
}
}

class
child extends dad {
   function
child()
   {
       echo
"I'm " , get_parent_class($this) , "'s son\n";
   }
}

class
child2 extends dad {
   function
child2()
   {
       echo
"I'm " , get_parent_class('child2') , "'s son too\n";
   }
}

$foo = new child();
$bar = new child2();

?>

вывод:

I'm dad's son
I'm dad's son too

См. также get_class() и is_subclass_of().



get_parent_class
birkholz at web dot de
06-Oct-2005 05: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 07: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 06: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
05-Apr-2003 07: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 04: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
)

<get_object_varsinterface_exists>
 Last updated: Tue, 15 Nov 2005