在一段代码中,我发现了以下条件语句:
if ( !defined('MY_CONSTANT') || MY_CONSTANT !== false )
我想知道这可能实现的目标只能通过简单说明来实现:
if ( MY_CONSTANT !== false )
.. 是不是这样,如果MY_CONSTANT!== false,那么它也必须被定义,使第一个例子的第一个参数变得多余,或者我错过了什么?
答案 0 :(得分:3)
如果此时常量可能未定义,则尝试访问它将在正确配置的服务器上发出警告。您不希望那些填满您的错误日志,因此defined()
检查。
答案 1 :(得分:2)
只要其中一个条件成立,or
条件就会停止评估。
由于条件是从左到右计算的,并且尝试检查未定义的常量是否会产生异常,因此首先检查它是否已定义,然后检查其值。
如果未定义常量,则if
语句退出,并且不会尝试检查该值。
答案 2 :(得分:1)
您的版本和第一个版本不一样:
如果没有定义,第一个版本的第一个条件将为真,它将“触发”。
如果未定义,则您的版本将为false。 (好吧,至少提出错误;))
答案 3 :(得分:0)
不,因为如果没有定义MY_CONSTANT
,PHP会给你一个错误信息:
Notice: Use of undefined constant MY_CONSTANT
答案 4 :(得分:0)
如果未定义MY_CONSTANT
,PHP将做两件事:
MY_CONSTANT
解释为文字字符串"MY_CONSTANT"