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__ Magic Constantを使用してみてください。継承が行われているかどうかに関係なく、現在のクラス名を返します。

于 2014-06-08T10:38:22.727 に答える