2010-11-17 23 views

Respuesta

5

Se podría llamar get_parent_class repetidamente hasta que vuelve falsa:

function getClassHierarchy($object) { 
    if (!is_object($object)) return false; 
    $hierarchy = array(); 
    $class = get_class($object); 
    do { 
     $hierarchy[] = $class; 
    } while (($class = get_parent_class($class)) !== false); 
    return $hierarchy; 
} 
1

Si desea comprobar los tipos específicos, o construir una función para crear desglose sin necesidad de utilizar cualquiera de las otras soluciones, se puede recurrir a 'instancia de' para determinar si también es un tipo específico, será cierto para verificar si una clase extiende una clase principal.

0

La clase ReflectionClass parte de la PHP Reflection API tiene un método getParentClass().

He aquí una muestra pequeña de código de usarlo:

<?php 

class A { } 
class B extends A { } 
class C extends B { } 


$class = new ReflectionClass('C'); 
echo $class->getName()."\n"; 
while ($class = $class->getParentClass()) { 
    echo $class->getName()."\n"; 
} 

Run the code

26

Puede utilizar

  • class_parents - Volver a todas las clases de padres de la clase dada en una matriz

Ejemplo:

print_r(class_parents('RecursiveDirectoryIterator')); 

es la salida

Array 
(
    [FilesystemIterator] => FilesystemIterator 
    [DirectoryIterator] => DirectoryIterator 
    [SplFileInfo] => SplFileInfo 
) 
Cuestiones relacionadas