日常の PHP 開発では、ユーザー入力の取得、設定項目の読み取り、データベース結果の処理など、変数が存在するか空であるかを判断する必要がよくあります。PHP7 より前では、通常、null 判定ロジックを実装するにはisset()関数または三項演算子を組み合わせる必要がありました。このようなコードは長くて読みにくいことがよくありました。 PHP7 で導入された null 合体演算子 ( ?? ) は、この問題に対するより簡潔な解決策を提供します。
$value = $variable ?? $default;
この式は次のことを意味します。 $variableが存在し、 nullでない場合、 $value は$variableの値を取得します。それ以外の場合、 $value は$default を受け取ります。この記述方法により、従来の null ステートメントが効果的に簡素化され、コードがより直感的になります。
ユーザーフォームデータを受信するときは、通常、変数が定義されていることを確認する必要があります。次の例は、null 合体演算子を使用してこのプロセスを簡素化する方法を示しています。
$username = $_POST['username'] ?? 'Anonymous';
echo "Welcome, " . $username;
ここで、プログラムはまず$_POST['username']の取得を試みます。ユーザーがユーザー名を入力せず、変数が空の場合は、デフォルト値「匿名」が自動的に使用されます。
データベース操作では、指定されたユーザーが存在しない場合などに、関数がnullを返すことがあります。この状況は、null 合体演算子を使用してエレガントに処理できます。
$user = getUserFromDatabase($userId) ?? getDefaultUser();
このステートメントは、まずデータベースからユーザー情報を取得しようとします。結果が空の場合は、自動的にgetDefaultUser()を呼び出してデフォルトのユーザー オブジェクトを返します。
null 合体演算子は次の場合に最適です。
これにより、コード構造がより明確になり、冗長なifまたはisset() の判断が回避されます。
null 合体演算子は、変数がnullか未定義であるかを判断するだけであり、空の文字列や0などの他の "null 値" は検出しないことに注意してください。より複雑な判定ロジックが必要な場合でも、 empty()またはカスタム関数と組み合わせて実装できます。
PHP7 の null 合体演算子は、開発者に洗練された糖衣構文を提供し、null 操作をより簡潔で読みやすくします。ユーザー入力を処理する場合でも、データベース クエリを処理する場合でも、コードの保守性と可読性を効果的に向上させることができます。日常の開発では、この機能を柔軟に使用することで、PHP コードがより最新のものになります。