2010-11-17 6 views

Répondre

5

Vous pouvez appeler get_parent_class à plusieurs reprises jusqu'à ce qu'il retourne faux:

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 vous voulez vérifier les types spécifiques, ou construire une fonction pour créer drilldown sans utiliser aucune des autres solutions, vous pouvez recourir à 'instanceof' pour déterminer si c'est aussi un type spécifique, Il sera vrai pour vérifier si une classe étend une classe parente.

0

La partie ReflectionClass de la classe PHP Reflection API a une méthode getParentClass().

Voici un petit exemple de code utilisant:

<?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

Vous pouvez utiliser

  • class_parents - Retourne toutes les classes parent de la classe donnée dans un tableau

Exemple:

print_r(class_parents('RecursiveDirectoryIterator')); 

volonté sortie

Array 
(
    [FilesystemIterator] => FilesystemIterator 
    [DirectoryIterator] => DirectoryIterator 
    [SplFileInfo] => SplFileInfo 
) 
Questions connexes