0
0

PHP8 以降で「throw を式として扱える」

Posted at

PHPマニュアル読んでたら見かけたけどどういう意味やねん!!!

PHP 8.0.0 以降では、throw キーワードは式として扱えるようになり、 様々なコンテクストで使えるようになりました。 これより前のバージョンでは、throw は文であり、 それが現れる行でだけでしか使えませんでした。

ちょっと何言っているか分からなかったので調べてみたら言葉通りでした。
条件式に throw を書けるということですね…。

サンプルコード

  • value が 0 より大きければ value を返却
  • value が 0 以下の場合は例外 InvalidArgumentException を投げる

PHP7以前

if ($value > 0) {
    return $value;
}

throw new InvalidArgumentException(__CLASS__ . " に範囲外の値が渡されました。" . $value);

PHP8以降はこう書ける

三項演算子の false 側で throw とか

return $value > 0 
    ? $value 
    : throw new InvalidArgumentException(__CLASS__ . " に範囲外の値が渡されました。" . $value);

if 文の中にそのまま throw を追加するとか

if ($value > 0 || throw new InvalidArgumentException(__CLASS__ . " に範囲外の値が渡されました。" . $value)) {
    return $value;
}

感想

個人的にはあまり使わないかもです
ただ知らないとコードレビューで戸惑いそうなので知識として覚えておきます

0
0
2

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
0
0