Soluzione
echo $person->middleName ?? 'Person does not have a middle name';
Per mostrare come ciò apparirebbe in un'istruzione if per maggiore chiarezza su come funziona.
if($person->middleName ?? false) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
Spiegazione
Il modo tradizionale PHP per verificare l'esistenza di qualcosa è fare:
if(isset($person->middleName)) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
O per un modo più specifico di classe:
if(property_exists($person, 'middleName')) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
Entrambi vanno bene in dichiarazioni di forma lunga ma in dichiarazioni ternarie diventano inutilmente ingombranti in questo modo:
isset($person->middleName) ? echo $person->middleName : echo 'Person does not have a middle name';
Puoi anche raggiungere questo obiettivo solo con l'operatore ternario in questo modo:
echo $person->middleName ?: 'Person does not have a middle name';
Ma ... se il valore non esiste (non è impostato) genererà una E_NOTICE
e non è la migliore pratica. Se il valore è, null
non genererà l'eccezione.
Pertanto, l'operatore ternario in soccorso rende questa una piccola risposta chiara:
echo $person->middleName ?? 'Person does not have a middle name';