ReflectionClass
在线手册:中文  英文

ReflectionClass::getParentClass

(PHP 5)

ReflectionClass::getParentClass获取父类

说明

public object ReflectionClass::getParentClass ( void )

Warning

本函数还未编写文档,仅有参数列表。

参数

此函数没有参数。

返回值

一个 ReflectionClass

参见


ReflectionClass
在线手册:中文  英文

用户评论:

isaac dot z dot foster at gmail dot com (2013-06-15 21:02:10)

Quick correction, the code for getting all parent classes below has a "typo", you need to reset the $class variable to the parent class instance, otherwise it just endlessly loops:
$class = new ReflectionClass('classname');

$parents = array();

while ($parent = $class->getParentClass()) {
$parents[] = $parent->getName();
$class = $parent;
}

echo "Parents: " . implode(", ", $parents);

havelangep at hotmail dot com (2010-12-16 01:26:38)

Here is a "replacement" for is_a that will additionally look both into the extended classes and in the implemented interfaces

<?php
/**
     * Check if a class extends or implements a specific class/interface
     * @param string $search The class or interface name to look for
     * @param string $className The class name of the object to compare to
     * @return bool
     */
    
function IsExtendsOrImplements$search$className ) {
        
$class = new ReflectionClass$className );
        if( 
false === $class ) {
            return 
false;
        }
        do {
            
$name $class->getName();
            if( 
$search == $name ) {
                return 
true;
            }
            
$interfaces $class->getInterfaceNames();
            if( 
is_array$interfaces ) && in_array$search$interfaces )) {
                return 
true;
            }
            
$class $class->getParentClass();
        } while( 
false !== $class );
        return 
false;
    }
?>

jochem at drecomm dot nl (2010-11-18 04:34:59)

When you want to find all parents (parent, parent of parent, parent of parent's parent and so on) try:

<?php
$class 
= new ReflectionClass('whatever'); 

$parents = array();

while (
$parent $class->getParentClass()) {
    
$parents[] = $parent->getName();
}

echo 
"Parents: " implode(", "$parents);
?>

ReflectionClass::getParentClass() can return a ReflectionClass object of the parent class or false if no parent.

(PHP Version 5.1.6)

meecrob at k42b3 dot com (2008-06-20 03:47:17)

When your class extends a parent class you maybe want the name
of them. Using getParentClass() is maybe a bit confusing. When
you want the name as string try the following.

<?php
$class 
= new ReflectionClass('whatever');

$parent = (array) $class->getParentClass();

if(
array_key_exists('name'$parent))
{
    
# name of the parent class
    
$parent parent['name'];
}
else
{
    
# no parent class avaible
    
$parent false;
}
?>

When you turn getParentClass() to an array it will result either
array(0 => false) when no parent class exist or 
array('name' => 'name of the parent class'). Tested on PHP 5.2.4

易百教程