ホームページ > バックエンド開発 > PHPチュートリアル > PHP の Nullsafe オペレータ (?-) はどのようにして Null ポインタ例外を防ぐことができますか?

PHP の Nullsafe オペレータ (?-) はどのようにして Null ポインタ例外を防ぐことができますか?

Patricia Arquette
リリース: 2024-12-19 07:07:26
オリジナル
657 人が閲覧しました

How Can PHP's Nullsafe Operator (?-) Prevent Null Pointer Exceptions?

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 演算子は、オブジェクトのプロパティとメソッドにアクセスする次の演算子と連携します:

  • 配列アクセス ([]) : $data?->[0]
  • プロパティ アクセス (->): $data?->name
  • Nullsafe プロパティ アクセス (?->): $data?->name
  • 静的プロパティ アクセス (::): Parent::name
  • メソッド呼び出し (->): $data->getName()
  • Nullsafe メソッド呼び出し (?->): $data?->getName()
  • 静的メソッド呼び出し (::): Parent:: getName()

たとえば、コードは次のとおりです。以下:

$string = $data?->getObject()->getName() . " after";
ログイン後にコピー

は次と同等です:

$string = (isset($data) && $data !== null) ? $data->getObject()->getName() . " after" : null;
ログイン後にコピー

$data が null の場合。

nullsafe 演算子を利用することで、よりクリーンで簡潔なコードを作成できます。 Null ポインター例外が存在しないことを保証しながら。

以上がPHP の Nullsafe オペレータ (?-) はどのようにして Null ポインタ例外を防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート