解決
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';