使用未定义的常量作为变量时的缺点

时间:2011-06-20 05:36:39

标签: php constants

嗯,不知道要搜索什么,因此不知道这是不是重复。

示例:

function foo($bar){
    switch($bar)
        case UNDEFINED:
            return 'foo';
        break;
        case DEFINED:
            return 'bar';
        break;
        default:
            return 'no foo and no bar';
    }
}

echo foo(DEFINED); # edited: had $ before function call
// bar

echo foo(OUTPUT);
// no foo and no bar

PHP(版本5.3)不会抛出任何错误,但这有什么缺点吗?

1 个答案:

答案 0 :(得分:3)

未定义的常量被解释为字符串。在你的情况下,这将是两个字符串“DEFINED”和“UNDEFINED”。从PHP手册:

  

如果使用未定义的常量,PHP   假设你的意思是   恒定,就像你打电话一样   它作为一个字符串(CONSTANT vs   “不变”)。级别错误   E_NOTICE将在此时发布   发生的情况。

编辑忽略E_NOTICE被认为是错误的样式,这来自PHP文档:

  

在开发期间启用E_NOTICE   有一些好处。用于调试   用途:注意消息将发出警告   关于代码中可能存在的错误。   例如,使用未分配的值   被警告它非常有用   找到拼写错误并节省时间   调试。注意消息将发出警告   关于糟糕的风格。例如,   $ arr [item]最好写成   $ arr ['item']因为PHP试图对待   “项目”为常数。如果不是   常量,PHP假定它是一个字符串   数组的索引。