Çözüm
echo $person->middleName ?? 'Person does not have a middle name';
Bunun nasıl çalıştığına dair daha fazla netlik için bunun bir if ifadesinde nasıl görüneceğini göstermek.
if($person->middleName ?? false) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
açıklama
Bir şeyin varlığını kontrol etmenin geleneksel PHP yolu:
if(isset($person->middleName)) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
VEYA daha sınıfa özgü bir yol için:
if(property_exists($person, 'middleName')) {
echo $person->middleName;
} else {
echo 'Person does not have a middle name';
}
Bunların her ikisi de uzun biçimli ifadelerde iyidir, ancak üçlü ifadelerde gereksiz şekilde hantal hale gelirler:
isset($person->middleName) ? echo $person->middleName : echo 'Person does not have a middle name';
Bunu sadece aşağıdaki üçlü operatörle de yapabilirsiniz:
echo $person->middleName ?: 'Person does not have a middle name';
Ama ... eğer değer yoksa (ayarlanmadıysa) bir artıracak E_NOTICE
ve en iyi uygulama değildir. Değer, null
istisnayı artırmaz.
Bu nedenle kurtarma için üçlü operatör bunu düzgün küçük bir cevap haline getirir:
echo $person->middleName ?? 'Person does not have a middle name';