2

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

示例代码

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();

是否可以在 PHP 中使用?

在我的场景中,我正在构建 ClassB 并且我想覆盖函数 ClassB::Foo() 以扩展其行为,然后将控件处理回它的父函数 ClassA::Foo() 但代码中断,因为它现在是一个对象B类。请不要因为“代码气味”而责备我,因为我现在觉得它很难看!ClassA 是我无法控制的... :-)

4

1 回答 1

1

尝试使用__CLASS__ 魔术常数。它返回您当前所在的类名,无论是否进行任何继承。

于 2014-06-08T10:38:22.727 回答