0

親クラス関数を呼び出すより正しい方法は何ですか? parent::または$this->

class base{

    public function get_x(){
        return 'x'; 
    }
}

class child extends base{

    public function __construct(){
        //this?
        $x = parent::get_x();
        //or this?
        $x = $this->get_x();
    } 

}

ありがとう!

4

1 に答える 1

2

独自の意味があるため、「より正確な」シンタックスはありません。

$this->は「現在のオブジェクト」を意味するため、メソッドがオーバーライドされた場合、これは呼び出すメソッドです。

parent::「親の行動」を意味します。メソッドをオーバーライドし、親の動作に何かを追加したい場合に便利です。

したがって、クラスのどこかでchildget_x メソッドをオーバーライドし、親の動作のみが必要な場合は、parent:: を使用してください。そうでない場合は、$this を使用してください。

誰でも拡張することで動作を再定義できるため、コンストラクターでnot finalメソッドを呼び出さないことをお勧めすることが多いと言って、この答えを終わらせます。

于 2012-11-29T06:44:42.910 に答える