T

PHPのdefined関数でありがちなこと

<?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");
}

?>

もちろん、これなら動く。

このパターンのバグが今日、職場で発見されたのでメモ。

Posted by on 8月 27, 2008 in PHP

コメントを残す