检查未定义的常量

时间:2011-07-24 18:09:48

标签: php constants undefined

我见过很多人使用

defined('XXX') or define('XXX', 'XXX');

而不是

if(!defined('XXX')){
  define('XXX', 'XXX');
}

第一个代码是否完全相同?为什么人们会使用它?

4 个答案:

答案 0 :(得分:2)

该功能称为short circuit evaluation,它在许多语言中都很常见。布尔表达式从左到右进行计算,当已经有结果时,评估停止。在这种情况下,如果定义了常量,则表达式为TRUE,无论其他术语如何,因此define()不会运行。

答案 1 :(得分:1)

他们完全一样。第一个是写的更短。与使用

类似
mysql_connect(...) or die('some error');

仅当左侧为OR时才会评估逻辑FALSE的右侧。

答案 2 :(得分:0)

完全相同的事情。基本上是它的(真实条件)或错误的替代

答案 3 :(得分:0)

它完全相同,依赖于逻辑OR需要评估第二个操作数,如果第一个操作数计算为FALSE。

我不会过于宽泛地使用这种方法,因为它倾向于“短路”条件(即TRUE or f(); - 永远不会调用f())