Как получить список/дерево классов объекта

Категория: PHP

Получаем массив дерева или список дочерних классов указанного объекта.

Используем рефлексию:

$object = <Our Some Object>;
$class = new \ReflectionClass($object);
$lineage = [];
$lineage[] = get_class($query);
while ($class = $class->getParentClass()) {
    $lineage[] = $class->getName();
}
print_r($lineage);

Можно обойти все дерево классов get_declared_classes() и применить функцию is_subclass_of(), но на выходе получим не дерево, а не сортированный массив:

$lineage = [];
$lineage[] = get_class($query);
foreach (get_declared_classes() as $class) {
    if (is_subclass_of($query, $class)) $lineage[] = $class;
}
print_r($lineage);

#php classes tree

категория: PHP