PHP 7 の新しい演算子

PHP 7 では次の演算子が追加されました。

  • null 合体演算子 ( ?? )
  • 宇宙船演算子 ( <=> )

宇宙船演算子 については次をご覧ください。

[PHP] 宇宙船演算子 とは
PHP7で追加された宇宙船演算子について紹介いたします。
atuweb 開発ブログ

null 合体演算子

コードサンプルを見てみます。

これが旧来の PHP っぽい書き方です。

1if (isset($_POST['action'])) {
2    $action = $_POST['action'];
3} else {
4    $action = 'default';
5}

isset() で変数の状態を調べてます。
仕方がないとはいえ、ダサいですねー


上のコードを null 合体演算子 で置き換えてみましょう。

1$action = $_POST['action'] ?? 'default';

シンプルで美しいですね。

何よりもコードが短くなって、随分わかりやすくなったと思いませんか ?

PHP
Null 合体演算子
http://php.net/manual/ja/language.operators.comparison.php#language.operators.comparison.coalesce

サンプルコードは PHP のドキュメントより引用しました。

エルビス演算子 (?:) で楽ができないケースにも

エルビス演算子 (?:) も似たようなものというイメージがありますが、

null 合体演算子は中で isset() しているため、よりゆるくコードを書くことができる、というカジュアルさが良いですね。

例えば、変数 $fuga を宣言せずに、

1$hoge = $fuga ?: 'default';

と、いきなりした場合は notice が発生します。
当然です。
そういう演算子じゃないですからね。

これに対し、 null 合体演算子は、次のコードが通ります。

1$hoge = $fuga ?: 'default';

「PHP がゆるすぎて気持ち悪い」もありますけれども、

楽をしても問題ないところはドンドンゆるく 書けばいい、

というのが私の考えです。

新しいコードには積極的に ?? を使うと良さそうです。