我有一个对象,想列出所有父类,直到 stdClass 或其他什么。
我已经在我的数据库表中添加了一个多态字段(比如类别)并且想要自动化我的查找器方法以便也返回父类(super class),这样我可以在我知道不一定是最终的点跳入继承树子类:
FoodCategory::find_by_id(10) === Category::find_by_id(10)
SELECT * FROM categories WHERE ..... AND type IN ('FoodCategory', 'Category');
大概是:
function get_class_lineage($object){
$class = get_parent_class($object);
$lineage = array();
while($class != 'stdClass'){
$dummy_object = new $class();
$lineage[] = $class = get_parent_class($dummy_object);
}
return $lineage;
}
但这会实例化一个对象,有谁知道如何在没有的情况下实现这一点?
感谢您的任何输入,我觉得我在这里遗漏了一些明显的东西。
最佳答案
使用反射
$class = new ReflectionClass($object);
$lineage = array();
while ($class = $class->getParentClass()) {
$lineage[] = $class->getName();
}
echo "Lineage: " . implode(", ", $lineage);
ReflectionClass接受类名或对象名。
关于php - 在继承树中获取 PHP 对象的祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640303/