Решение
echo $person->middleName ?? 'Person does not have a middle name';
Чтобы показать, как это будет выглядеть в операторе if, для большей ясности о том, как это работает.
if($person->middleName ?? false) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
объяснение
Традиционный способ проверки существования чего-либо на PHP заключается в следующем:
if(isset($person->middleName)) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
ИЛИ для более специфичного для класса способа:
if(property_exists($person, 'middleName')) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
Они оба хороши в длинных выражениях, но в троичных выражениях они становятся излишне громоздкими, например:
isset($person->middleName) ? echo $person->middleName : echo 'Person does not have a middle name';
Вы также можете достичь этого только с помощью троичного оператора, например:
echo $person->middleName ?: 'Person does not have a middle name';
Но ... если значение не существует (не установлено), оно вызовет E_NOTICE
и не является лучшей практикой. Если значение равно, null
оно не вызовет исключения.
Поэтому троичный оператор на помощь делает этот аккуратный маленький ответ:
echo $person->middleName ?? 'Person does not have a middle name';