PHPのdefined関数でありがちなこと
PHP August 27th, 2008
<?php
define(_A_CONSTANT, 'this is a constant');
if(defined(_A_CONSTANT)){
print("Hello");
}
?>
超特殊な場合を除き、絶対に「Hello」は出力されない。なぜなら、ちゃんとマニュアルにも記載されているが、上のコードは
<?php
define(_A_CONSTANT, 'this is a constant');
if(defined('this is a constant')){
print("Hello");
}
?>
と等価になってしまう。
でも他人のコードをデバッグしているときは、これはなかなか見つからない。
<?php
define(_A_CONSTANT, 'this is a constant');
if(defined('_A_CONSTANT')){
print("Hello");
}
?>
もちろん、これなら動く。
このパターンのバグが今日、職場で発見されたのでメモ。