get_class()
da mi możliwą klasę obiektu.Określenie hierarchii klas obiektu w środowisku wykonawczym
Chcę poznać cały łańcuch klas rodzicielskich. Jak to zrobić?
get_class()
da mi możliwą klasę obiektu.Określenie hierarchii klas obiektu w środowisku wykonawczym
Chcę poznać cały łańcuch klas rodzicielskich. Jak to zrobić?
Można zadzwonić get_parent_class
wielokrotnie, aż powróci fałszywe:
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;
}
Jeśli chcesz sprawdzić dla szczególnych rodzajów lub zbudować funkcję do tworzenia drążenia bez użycia jakichkolwiek innych rozwiązań, można uciekać do 'instanceof', aby określić, czy jest to również określony typ, Będzie to prawdą dla sprawdzenia, czy klasa rozszerza klasę nadrzędną.
Część klasy ReflectionClass z ma metodę getParentClass().
Oto mała próbka kodu używając go:
<?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";
}
Można użyć
class_parents
- Powrót wszystkie klasy nadrzędne danej klasy w tablicyPrzykład:
print_r(class_parents('RecursiveDirectoryIterator'));
wyjście wola
Array
(
[FilesystemIterator] => FilesystemIterator
[DirectoryIterator] => DirectoryIterator
[SplFileInfo] => SplFileInfo
)