PHP: get_parent_class - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

interface_exists get_object_vars

Last updated: Sat, 27 Jan 2007

view this page in

# 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().

add a note User Contributed Notes
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
)`
add a note
interface_exists get_object_vars

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST