no-image

PHPのdefineの挙動

このあいだ川o・-・)<2nd lifeの中の人から「PHPって定義してない定数使うとどうなると思う?」とかゆわれて「未定義だからnoticeでNULL?いあ、変数と違うからwarningかfatalがでるんじゃない?」とか適当に発言したら、、

定義すると

<?php
define(‘define_word’,’pq’);
echo define_word;
?>

出力結果は当然

pq

となる。じゃあdefine行を外してみると、、

<?php
echo define_word;
?>

結果

define_word

!!!!!

あれ!こんなんだっけ!定数が未定義かどうか調べる時って、define_word == ‘define_word’とかやるの?そんなことやった記憶がないんだけど!

あわててマニュアル見てみると

未定義の定数を使用した場合、ちょうどstringとして コールしたかのように(CONSTANT vs "e;CONSTANT"e;)、 PHPはその定数自体の名前を使用したと仮定します。 この際、E_NOTICE が発生します。 ある定数が設定されているかどうかを知るには、 defined() 関数を使用して下さい。

あほへほへるー

そういえばdefinedで調べるクセついてたなw

この辺の挙動うまく使って予約語だけでJAPHみたいなのできそうじゃね?(てけと