我正在寻找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?
答案 0 :(得分:1)
如果您需要调用父方法,您只需使用parent::method_name()
即可轻松完成。
在这种情况下,$A
属性是公共的(var
已使用),它也将在子类中可见。
您不必担心方法Y
会返回$this
。它可能用于链接类方法,你不能在这里使用它,所以你不需要关心它。
答案 1 :(得分:0)
就the official documentation而言,parent::method();
是可行的方法。
答案 2 :(得分:0)
方法很好。无需将parent::Y()
的结果分配给变量。