PHP8.1の新機能紹介 Never return type

die(),exit(),trigger_error()といった処理が打ち切られて、値も返さない関数/メソッドで宣言できる型。

個人的にはあんまり使わなそうな予感。

例えばこんな感じなのだけれども

function never_test():never{
  echo 'end code.'.PHP_EOL;
  exit();
}

これが値を返したりexit()しない挙動(処理自体は書けてしまう)をしたときエラーになる。

たとえばこの関数だとfalseを引数に与えてexit()しないときに実行時エラーになる。
逆に言えばtrueを渡している限りはエラーにならないので注意が必要。

function never_test(bool $flag):never{
    if($flag){
        echo 'end code.'.PHP_EOL;
        exit();
    }
    echo 'continue code.'.PHP_EOL;
}

// never_test(false);// Fatal error: Uncaught TypeError: never_test(): never-returning function must not implicitly return
never_test(true);

カテゴリー: php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です