1
2
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

PHP8から追加された新機能「nullsafe演算子」を活用しよう

Posted at

nullsafe演算とは

nullsafe演算子(?->)は、オブジェクトのプロパティやメソッドにアクセスする際に、
nullチェックを簡潔に行うための新しいPHP構文です
従来の方法では、nullチェックを行うために複数の条件文を書く必要がありましたが、
nullsafe演算子を使用すると、コードがシンプルで読みやすくなります

基本構文

$property = $object?->property;
$result = $object?->method();

上記では、$objectがnull出ない場合にのみpropertymethodにアクセスし、nullの場合はnullを返すようになっています

実際のコード例と解説

従来の方法との比較

従来の方法では、以下のようにnullチェックを行う必要がありました

if ($object !== null) { // またはisset()、!empty()など
    $property = $object->property;
} else {
    $property = null;
}

nullsafe演算子を使うと、同じ処理を1行で記述できます

$property = $object?->property;

メソッドの場合は以下の通り

$result = $object?->method();

$objectがnullでない場合に、method()を呼び出し、その結果を$resultに代入します
nullの場合は、$resultにnullが代入されます

nullsafe演算子の具体的なユースケース

データベースアクセス

オブジェクトがデータベースからのレスポンスを表している場合、nullsafe演算子を使って安全にアクセスできるようになります

$user = $db->getUser($userId);
$username = $user?->getUsername(); // $userがnullなら呼び出さないようになり、nullが代入されるようになります

APIレスポンス処理

APIレスポンスがnullを含む可能性がある場合、nullsafe演算子を使ってエラーを避けることができます

$response = $api->getResponse();
$data = $response?->data?->item; // $responseまたはdataがnullであればitemへはアクセスされず、nullが代入されるようになります

深いネストのオブジェクト

深くネストされたオブジェクトにアクセスする場合、nullsafe演算子を使用するとコードが簡潔になります

$value = $object?->level1?->level2?->level3;

まとめ

nullsafe演算子は、PHP8で追加された便利な機能であり、コードの可読性と保守性を向上させることができます
従来のnull処理に比べてシンプルで使い勝手が良いのですがnullsafe演算子だけでは解決できない実装もあるかと思いますので適材適所に使い分けましょう!

参考リンク

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2