Нужно вывести имя клиента платежа. Возьмем такой пример:
class Payment
{
/**
* @var Customer|null
*/
protected $customer;
public function getCustomer()
{
return $this->customer;
}
public function setCustomer(Customer $customer)
{
$this->customer = $customer;
}
}
class Customer
{
public function getFirstname()
{
return 'Name';
}
}
/** @var Payment $payment */
echo $payment->getCustomer()->getFirstname();
Как вы могли догадаться, бывает так что клиента в платеже нет. Был удален, например. В этом случае возникнет ошибка потому что обращение к null.
Можно создать метод с проверкой (или просто условие):
public function printCustomerFirstname(Payment $payment)
{
if ($payment->getCustomer()) {
echo $payment->getCustomer()->getFirstname();
}
}
/** @var Payment $payment */
printCustomerFirstname($payment);
Но как бы это решил "синьер"?
Возможно что в 2018 уже выработался какой-то best practice.