ReflectionClass::getParentClass

(PHP 5)

ReflectionClass::getParentClassObtiene la clase padre

Descripción

public object ReflectionClass::getParentClass ( void )

Advertencia

Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Una clase de tipo ReflectionClass.

Ver también

add a note add a note

User Contributed Notes 3 notes

up
1
isaac dot z dot foster at gmail dot com
10 months ago
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);
up
0
jochem at drecomm dot nl
3 years ago
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)
up
-1
havelangep at hotmail dot com
3 years ago
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;
    }
?>
To Top