PHP7から追加された機能について

PHP7から追加された機能について検証してみました。

以下では4項目のみ取り上げますが、もっと盛りだくさんの機能追加がされています。

1. "??"(null比較演算子)
与えられた左辺がnullの場合、右辺で定義した値を返す
たとえば、下記のような書き方をします。

$arr1['abc'] = 'def';
return $arr1['abc'] ?? false; // ptn1: $arr1['abc']は定義されているので、'def'が返る
return $arr2['abc'] ?? false; // ptn2: $arr2['abc']は定義されていないため、falseが返る

ptn2の場合は、isnullやissetを利用して通常確認するため
isnull、isset地獄から抜け出せる可能性大ですね。

2. "<=>"(組み合わせ比較演算子)
左辺が大きい場合に1、右辺が大きい場合に-1を返す)
例:

return 1 <=> 2 // -1
return 2 <=> 1 // 1


威力を発揮するのは、usort等でしょうか。
たとえばこんな感じの。

usort($array, function($a, $b) {
    return $a <=> $b;
});

3. 戻り型の指定(Return Types)
関数の戻りの型を定義することが出来ます。
例として、以下のような書き方をします。

function getArrData() : array {
    return 10;
}
$retArr = getArrData();

上記コードでは、getArrDataはarrayを返すようになっているのに、intを返しているため
PHP Fatal error: Uncaught TypeError: Return value of getArrData() must be of the type array, integer returned
というエラーが発生します。

4. Exception on Fatals
これまでFatal Errorが発生すると止まっていたコードをtry~catchでかこむことで
Exceptionを発生させ、コードの実行中断をなくすことができます。

try {
    $ret = method();
    print $ret;
}catch(EngineException $ee) {
    print "Caught Exception: " . $ee->getMessage();
}

method()は定義されていないため、通常はFatalErrorで実行停止しますが
上記の場合は、メッセージを出力しながら続きを実行することが出来ます。

  • entry19ツイート
  • Google+

PageTop