Lösung
echo $person->middleName ?? 'Person does not have a middle name';
Um zu zeigen, wie dies in einer if-Anweisung aussehen würde, um mehr Klarheit darüber zu erhalten, wie dies funktioniert.
if($person->middleName ?? false) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
Erläuterung
Die traditionelle PHP-Methode, um die Existenz von etwas zu überprüfen, besteht darin, Folgendes zu tun:
if(isset($person->middleName)) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
ODER für einen klassenspezifischeren Weg:
if(property_exists($person, 'middleName')) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
Diese sind beide in langen Aussagen in Ordnung, aber in ternären Aussagen werden sie unnötig umständlich wie folgt:
isset($person->middleName) ? echo $person->middleName : echo 'Person does not have a middle name';
Sie können dies auch nur mit dem ternären Operator erreichen:
echo $person->middleName ?: 'Person does not have a middle name';
Aber ... wenn der Wert nicht existiert (nicht gesetzt ist), wird ein ausgelöst E_NOTICE
und dies ist keine bewährte Methode. Wenn der Wert ist null
, wird die Ausnahme nicht ausgelöst.
Daher ternäre Bediener zur Rettung machen dies eine nette kleine Antwort:
echo $person->middleName ?? 'Person does not have a middle name';