解決
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';
}
これらはどちらも長い形式のステートメントでは問題ありませんが、3項ステートメントでは次のように不必要に面倒になります。
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';