Рішення
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';