PHP是否允许在其他函数/方法中进行getter调用?

时间:2019-01-12 12:48:41

标签: php function exception

所以我有getter,我想在__toString()方法中调用它,但是当我回显对象时,它说__toString一定不能抛出异常。所以我想知道是否允许,如果允许,我的语法出了什么问题?

private $price;
private $title;

public function getPrice(){
    return $this->price;
}

public function getTitle(){
    return $this->title;
}

public function __toString(){
    return "Price: " . getPrice() . "; Title: " . getTitle(); 
}

1 个答案:

答案 0 :(得分:0)

最简单的答案是,这取决于您。

就我个人而言,我将避免访问getter方法内部的香草__toString()。  纯粹是因为如果其他人更改了方法接口,则可能会更改输出,并且可能不会破坏__toString方法。 (而且,它(无限地)变慢了,而我的OCD不允许它:D)

但是,如果您的getter中包含任何其他逻辑(这意味着它不仅仅是访问raw class属性),那么您可能仍必须访问该方法。如果是这种情况,我将确保其类型提示返回字符串(在php7中),以便您可以确定该方法的总体接口是可预测的。

public function getPrice(): string
{
    // some fancy logic that makes it a complex getter...
    $price = $this->someLogic($this->price);

    return $price;
}