PHP向上转换对象


PHP upcasting object

我可以向上转换一个对象到它的父对象吗?

示例代码

class ClassA {
  public function foo(){
    echo get_class($this);
  }
}
class ClassB extends ClassA {
  public function foo(){
    echo get_class($this); // prints ClassB :)
    parent::foo();         // prints ClassB / I want ClassA :(
  }
}
$B = new ClassB();
$B->foo();

在我的场景中,我正在构建ClassB,我想覆盖函数ClassB::Foo()扩展其行为,然后处理控件返回到它的父函数ClassA::Foo(),但代码中断,因为它现在是ClassB的对象。请不要因为"代码有味道"而责怪我,因为我现在知道它很丑了!a班已经不受我控制了……: -)

尝试使用__CLASS__魔法常数。它返回当前所在的类名,而不管是否进行继承。