PHPドキュメントの式に関するページを読んだところ、一番上に次のように書かれています。
式を定義する最も簡単で正確な方法は、「値を持つもの」です。
この単純な定義には、すべての関数とほとんどの言語構造が含まれますが、値を返さないことを明示的に示す言語構造がいくつかあります。
値を返す言語構造のリストを次に示します。
値を返さず、したがって式ではない興味深いいくつかを次に示します。
戻り値がないにもかかわらず、PHP で式として使用できるため、特に興味深いdie
と思います。exit
次のコード行はすべて、予想どおり構文エラーをスローします。
echo 'Hi' or echo 'Bye';
if(echo('foo'))
return return(1);
$foo['bar'] = isset($foo['bar']) ? unset($foo['bar']) : 0;
if(unset($foo['bar']))
__halt_compiler() or die;
ただし、次の PHP コードには構文エラーがまったくありません。
print 'Hi' or print 'Bye'; // Makes sense, print returns a value
if(!die() and exit) // Wait what's happening here?
quit(die(exit(quit()))); // die and exit don't have return values (does quit?)
$x = true ? die/2 : 5*exit();
$y = pow(die,7);
isset($_GET['bar']) or die(); // This one is actually pretty commonly used.
function quit(){
return exit;
}
PHP のドキュメントを調べたところ、die() と exit() のこの特別な扱いについての言及は見つかりませんでした。これがどこかに文書化されているかどうか、PHPの専門家は知っていますか。これは意図された動作であり、isset($_GET['bar']) or die();
安全に使用できるパターンですか。PHP の将来のバージョンで突然壊れる可能性はありますか?