ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

PHP8, 例外処理(throw)が三項演算子で使えるようになった。

php
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

PHP8から、三項演算子でthrowによる例外処理ができるようになりました。

理由はthrowの文法が『文』から『式』に変わったから。

できそうでできなかったモヤッとした気持ちが解決してスッキリしたので、いい仕様変更だと思います。

使う機会も多そう。

まずはこのコードを見てください。

<?php

$flag = true;
$result = $flag ? 'OK' : throw new Exception();

echo $result . PHP_EOL;

$flag = false;
$result = $flag ? 'OK' : throw new Exception();

なんかできそうじゃないですか?

でもこのコード、PHP7以前はエラーになります。

php74の実行結果
PHP Parse error:  syntax error, unexpected 'throw' (T_THROW) in /home/vagrant/php-test.php on line 4

throwの例外処理は式に見えるようで文だから。if, forなどと同じ。

中括弧({})を使わず、セミコロン(;)で終わるのに式じゃないというのがややこしい。

PHP8からは、throwは文から式に変わりました。これで上記のコードは実行可能です。

php80の実行結果
OK
PHP Fatal error:  Uncaught Exception in /home/vagrant/php-test.php:9
Stack trace:
#0 {main}
  thrown in /home/vagrant/php-test/php8-test.php on line 9

できそうでできなかったモヤモヤが晴れるいい仕様変更だと思います。

使う場面も多そうだし。

PHP公式ドキュメント

三項演算子

前の投稿
PHP8, 例外処理(throw)がアロー関数で使えるようになった。
PHP8, 例外処理(throw)がNull合体演算子で使えるようになった。
次の投稿
コメントを残す

*