get_class()
даст мне возможный класс объекта.
Я хочу знать всю цепочку родительских классов. Как это может быть сделано?
Вы можете вызвать get_parent_class
несколько раз, пока не вернет false :
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; }
Вы можете использовать
class_parents
– возвращает все родительские классы данного класса в массив Пример:
print_r(class_parents('RecursiveDirectoryIterator'));
выйдет
Array ( [FilesystemIterator] => FilesystemIterator [DirectoryIterator] => DirectoryIterator [SplFileInfo] => SplFileInfo )
Если вы хотите проверить конкретные типы или создать функцию для создания детализации без использования каких-либо других решений, вы можете прибегнуть к «instanceof», чтобы определить, является ли он также конкретным типом. Это будет верно для проверки того, является ли класс расширяет родительский класс.
Часть класса ReflectionClass API PHP Reflection имеет метод getParentClass () .
Вот небольшой пример кода, использующий его:
<?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"; }
Запустить код