PHP继承返回$ this的方法;

时间:2014-08-15 12:29:00

标签: php oop

我正在寻找PHP中下一个代码的正确方法:

class X {
    var $A = array();

    function Y() {
        $this->A[] = array('price'=>1);
        return $this;
    }
}

class Y extends X {

    var $VAT = 1.27;

    function Y() {

        parent::Y(); //at this point what is the correct way to call parent method?

        foreach ($this->A AS $akey => $aval) {
            if (is_array($aval)&&(array_key_exists('price',$aval))) {
                $this->A[$akey]['price'] = $aval['price'] * $this->VAT;
            }
        }
        return $this;
    }
}

当我用“parent :: Y();”调用父方法时我认为这不是PHP中的正确方法,因为它将返回一个没有命令任何变量标识符的对象,并可能在错误日志中引起警告或通知。

有没有人建议在这种情况下调用方法的正确方法是什么 - 不修改类X?

3 个答案:

答案 0 :(得分:1)

如果您需要调用父方法,您只需使用parent::method_name()即可轻松完成。

在这种情况下,$A属性是公共的(var已使用),它也将在子类中可见。

您不必担心方法Y会返回$this。它可能用于链接类方法,你不能在这里使用它,所以你不需要关心它。

答案 1 :(得分:0)

the official documentation而言,parent::method();是可行的方法。

答案 2 :(得分:0)

方法很好。无需将parent::Y()的结果分配给变量。