如何在php中获取(超级)父类中第一个被调用的子类的名称

如何在php中获取(超级)父类中第一个被调用的子类的名称,php,Php,假设我们有三个这样的类: class A { public function name(){ echo get_called_class(); } } class B extends A { public function name(){ parent::name(); } } class C extends B { public function name(){ parent::name();

假设我们有三个这样的类:

class A {
    public function name(){
        echo get_called_class();
    }
}


class B extends A {
    public function name(){
        parent::name();
    }
}

class C extends B {
    public function name(){
        parent::name();
    }
}

$c = new C();
$c->name(); //Result is C
如果运行此代码,结果将为“C”。 但是,我需要第一个孩子的名字“B”。 有什么想法吗?
谢谢。

这是一个有趣的问题,谢谢你提出的有趣的问题

下面的代码将使您能够从任何子类获取根父类的第一个子类

A类{
公共函数名(){
返回“未定义”;
}
受保护函数标识\u第一\u子项(){
$root=self::class;
$node=static::class;
$parent=get\u parent\u类($node);
而($parent!==$root){
$node=$parent;
$parent=get\u parent\u类($parent);
}
返回$node;
}
}
B类扩展了A类{
公共函数名(){
返回$this->identify_first_child();
}
}
C类扩展到B类{
公共函数名(){
返回$this->identify_first_child();
}
}
类D扩展了{
公共函数名(){
返回$this->identify_first_child();
}
}
E类扩展为D类{
公共函数名(){
返回$this->identify_first_child();
}
}
类F扩展了A{
公共函数名(){
返回$this->identify_first_child();
}
}
$a=新的a();
echo$a->name()。'
'; $b=新的b(); echo$b->name()。'
'; $c=新的c(); echo$c->name()
'; $d=新的d(); echo$d->name()
'; $e=新的e(); echo$e->name()
'; $f=新的f(); echo$f->name()
';
这将输出以下内容:

Undefined
B
B
D
D
F

非常感谢@ArchCodeMonkey!这是一个有趣的解决方案,很有效。