2

クラスがそのスーパークラスから getProperties メソッドを継承するようにします。

class Mother {
  function getProperties(){
    return get_class_vars(get_class($this));
  } 
}

class Child extends Mother{
  private $one = 1;
  private $two = 2;
}

問題は、Child で getProperties を呼び出すと、空の結果が得られることです。

 $c = new Child();
 var_dump( $c->getProperties() );

戻り値array(0) {}

Child の getProperties メソッドを同じコマンドで上書きすると、期待どおりに動作し、array(2) { ["one"]=> int(1) ["two"]=> int(2) }. したがって$this、メソッドを継承したクラスではなく、マザークラスに解決されると思います。必要に応じて Child にメソッドを継承させるにはどうすればよいですか? または$this、母の代わりに子を操作するように範囲を変更するにはどうすればよいですか? 多分私はここで非常に単純な事実を見逃しているので、助けていただければ幸いです。

4

1 に答える 1

5

問題は、あなたのプロパティがprivate. これにより、宣言クラスのみがアクセスできるようになり、他のクラスはアクセスできなくなります。それらを作るprotected

それでも、異なる PHP バージョン間でいくつかの矛盾があるように見えることに注意してください: http://3v4l.org/1Rm6e

于 2012-12-03T20:36:24.250 に答える