PHP の Nullsafe 演算子: 条件付きオブジェクト ナビゲーションの実現
PHP では、オブジェクト プロパティにアクセスしてメソッドを呼び出すと、次の場合に null ポインタ例外が発生する可能性があります。オブジェクトが null であるか、要求されたメンバーを持っていません。この問題に対処するために、PHP 8 で導入された nullsafe 演算子 (?-) により、オブジェクトのプロパティとメソッドの安全なナビゲーションが可能になります。
次のステートメントを考えてみましょう。
echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';
このステートメントは、 $data オブジェクトには getMyObject() プロパティがあり、それが null でない場合。プロパティが存在し、null でない場合は、そのオブジェクト内の getName() プロパティへのアクセスに進みます。ただし、プロパティが存在しないか null の場合、ステートメントはそれ以上先に進みません。
nullsafe 演算子を使用すると、ステートメントを次のように書き換えることができます。
echo $data->getMyObject()?->getName();
このステートメントでは、$data が null であるか、getMyObject() プロパティがない場合、演算子のチェーンは終了し、null が返されます。これにより、欠落しているプロパティやメソッド呼び出しを例外なく適切に処理できるようになります。
nullsafe 演算子は、オブジェクトのプロパティとメソッドにアクセスする次の演算子と連携します:
たとえば、コードは次のとおりです。以下:
$string = $data?->getObject()->getName() . " after";
は次と同等です:
$string = (isset($data) && $data !== null) ? $data->getObject()->getName() . " after" : null;
$data が null の場合。
nullsafe 演算子を利用することで、よりクリーンで簡潔なコードを作成できます。 Null ポインター例外が存在しないことを保証しながら。
以上がPHP の Nullsafe オペレータ (?-) はどのようにして Null ポインタ例外を防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。