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::意思是“父母的行为”。当你重写一个方法并且你想为父母的行为添加一些东西时,它很有用。

因此,如果您在类中的某个地方child覆盖了 get_x 方法并且您只想要父级的行为,请使用 parent:: 如果没有,请使用 $this。

我会通过说通常建议不要在构造函数中调用非最终方法来结束这个答案,因为任何人都可以通过扩展它来重新定义行为。

于 2012-11-29T06:44:42.910 回答