Можно ли вывести полную цепочку наследования класса в PHP? - PullRequest
1 голос
/ 24 октября 2011

С учетом

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

Есть ли способ из экземпляра из class d показать, что его определение класса расширяет c, расширяющий b, расширяющий a? Есть ли способ сделать это статически, учитывая имя класса?

Я устала ползти из файла в файл, выясняя, что расширяет что и так далее.

Ответы [ 2 ]

4 голосов
/ 25 октября 2011

Я часто использую:

<?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.

3 голосов
/ 24 октября 2011

Вы хотите использовать 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);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...