Как получить список/дерево классов объекта
Получаем массив дерева или список дочерних классов указанного объекта.
Используем рефлексию:
$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