可以在一个输出在PHP中的类的完整继承链?(Can one output the full inhe

2019-09-28 20:30发布

特定

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

有没有一种方法,从一个实例 class d ,以表明它的类定义扩展了C延伸B的延伸? 有没有做到这一点静态给出的类名称的方法吗?

我厌倦了从文件缓慢移动到文件搞清楚什么东西延伸,等等。

Answer 1:

我经常使用:

<?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));

?>

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



Answer 2:

你想用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);
?>


文章来源: Can one output the full inheritance chain of a class in PHP?