get_class()
会给我一个对象的最终类。
我想知道所有父类链。怎么办呢?
答案 0 :(得分:26)
您可以使用
class_parents
- 返回数组中给定类的所有父类示例:
print_r(class_parents('RecursiveDirectoryIterator'));
将输出
Array
(
[FilesystemIterator] => FilesystemIterator
[DirectoryIterator] => DirectoryIterator
[SplFileInfo] => SplFileInfo
)
答案 1 :(得分:6)
您可以反复调用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;
}
答案 2 :(得分:1)
如果要检查特定类型,或者构建一个函数来创建向下钻取而不使用任何其他解决方案,您可以使用'instanceof'来确定它是否也是特定类型,检查是否正确如果一个类扩展了父类。
答案 3 :(得分:0)
ReflectionClass的PHP Reflection API类部分采用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";
}