Разрешает ли PHP вызов метода получения в других функциях / методах? - PullRequest
0 голосов
/ 12 января 2019

Итак, у меня есть метод get, и я хочу вызвать его в методе __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 голосов
/ 12 января 2019

короткий ответ, это действительно ваше дело.

Лично я бы не использовал ванильный getter в вашем __toString() методе. Чисто потому, что если кто-то еще изменит интерфейс метода, он может изменить вывод, и может быть неочевидно, что он сломает метод __toString. (Кроме того, это (бесконечно мало) медленнее, и мой OCD не допустит этого: D)

Однако, если в вашем getter есть какая-то другая логика (подразумевающая, что это не просто доступ к свойству необработанного класса), то вам, возможно, все равно придется обращаться к методу. Если бы это было так, я бы удостоверился, что его подсказка типа возвращает строку (в php7), чтобы вы могли быть уверены, что общий интерфейс этого метода предсказуем.

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

    return $price;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...