LoginSignup
6
6

More than 5 years have passed since last update.

なぜ “or die()” は動くのに “or return” はダメなのか

Last updated at Posted at 2017-05-12

最近また PHP を一から勉強し直している @koogawa です。

$fp = @fopen($filepath, 'rb')
        or die('ファイルのオープンに失敗しました');

と同じノリで

$fp = @fopen($filepath, 'rb')
        or return;

と書いたら syntax error になったので理由を調べてみました。

すると、Stackoverflow でまさに同じ質問をしている人がおりました。

理由はシンプルでした。

or return doesn't work because return isn't considered an "expression" by the language parser - simple as that.

つまり、return「式」ではないんですね。

このあとに続く考察みたいなのも面白いので、興味がある方はぜひ読んでみることをおすすめします。

You can't run $handle = return 0; but $handle = fun(); is valid code.

言われてみると確かにそうですね。

なお、「式」と「文」については公式ドキュメント

に詳しく書いてあります。

今回の疑問をきっかけに、「式」と「文」とは何か?を考え直す良い機会になりました。
何か間違ったことを書いていたらツッコミお願いします :bow:

検証環境

  • PHP 5.6.30

リンク

6
6
5

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