get_class()
me dará la clase final de un objeto.La determinación de la jerarquía de clases de un objeto en el tiempo de ejecución
Quiero saber toda la cadena de clases para padres. ¿Cómo puede hacerse esto?
get_class()
me dará la clase final de un objeto.La determinación de la jerarquía de clases de un objeto en el tiempo de ejecución
Quiero saber toda la cadena de clases para padres. ¿Cómo puede hacerse esto?
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;
}
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.
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";
}
Puede utilizar
class_parents
- Volver a todas las clases de padres de la clase dada en una matrizEjemplo:
print_r(class_parents('RecursiveDirectoryIterator'));
es la salida
Array
(
[FilesystemIterator] => FilesystemIterator
[DirectoryIterator] => DirectoryIterator
[SplFileInfo] => SplFileInfo
)