get_class()
me donnera la classe éventuelle d'un objet.Détermination de la hiérarchie des classes d'un objet à l'exécution
Je veux connaître toute la chaîne des classes parentes. Comment cela peut-il être fait?
get_class()
me donnera la classe éventuelle d'un objet.Détermination de la hiérarchie des classes d'un objet à l'exécution
Je veux connaître toute la chaîne des classes parentes. Comment cela peut-il être fait?
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;
}
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.
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";
}
Vous pouvez utiliser
class_parents
- Retourne toutes les classes parent de la classe donnée dans un tableauExemple:
print_r(class_parents('RecursiveDirectoryIterator'));
volonté sortie
Array
(
[FilesystemIterator] => FilesystemIterator
[DirectoryIterator] => DirectoryIterator
[SplFileInfo] => SplFileInfo
)