最近また PHP を一から勉強し直している @koogawa です。
$fp = @fopen($filepath, 'rb')
or die('ファイルのオープンに失敗しました');
と同じノリで
$fp = @fopen($filepath, 'rb')
or return;
と書いたら syntax error になったので理由を調べてみました。
すると、Stackoverflow でまさに同じ質問をしている人がおりました。
理由はシンプルでした。
or return
doesn't work becausereturn
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.
言われてみると確かにそうですね。
なお、「式」と「文」については公式ドキュメント
- PHP: 式 - Manual http://php.net/manual/ja/language.expressions.php
- PHP: 導入 - Manual http://php.net/manual/ja/control-structures.intro.php
に詳しく書いてあります。
今回の疑問をきっかけに、「式」と「文」とは何か?を考え直す良い機会になりました。
何か間違ったことを書いていたらツッコミお願いします
検証環境
- PHP 5.6.30
リンク
- PHP: die - Manual - 関数の文脈で紹介されている(正確には言語構造)
- PHP: return - Manual - 制御構造の文脈で紹介されている