可以在PHP中输出类的完整继承链吗?

时间:2011-10-24 19:29:09

标签: php oop inheritance

鉴于

class a{...}
class b extends a{...}
class c extends b{...}
class d extends c{...}

是否有一种方法,来自class d实例,以显示它的类定义扩展c扩展b扩展了?有没有办法静态地给出类名?

我厌倦了从文件到文件的爬行,找出扩展内容的内容,等等。

2 个答案:

答案 0 :(得分:4)

我经常使用:

<?php
class grandfather {}
class father extends grandfather {}
class child extends father {}

function print_full_inheritance($class) {
  while ($class!==false) {
    echo $class . "\n";
    $class = get_parent_class($class);
  }
}

$child = new child();
print_full_inheritance(get_class($child));

?>

您可以在http://php.net/manual/en/function.get-parent-class.php的PHP手册中阅读更多内容。

答案 1 :(得分:3)

您想使用ReflectionClass。有人在此处发布了有关如何使用代码执行此操作的答案:http://www.php.net/manual/en/reflectionclass.getparentclass.php

<?php
$class = new ReflectionClass('whatever');

$parents = array();

while ($parent = $class->getParentClass()) {
    $parents[] = $parent->getName();
}

echo "Parents: " . implode(", ", $parents);
?>