所以我有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();
}
答案 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;
}