为什么在定义常量之前检查常量是否存在的方法:
defined('CONSTANT') || define('CONSTANT', somedefinition);
Run Code Online (Sandbox Code Playgroud)
用来代替:
if !(defined('CONSTANT')) {
define('CONSTANT', somedefinition);
}
Run Code Online (Sandbox Code Playgroud)
使用'或'代替'||'有什么区别吗 在第一种方法中,我已经在书中看到过.
Ric*_*urs 10
由于|| 正在(在C,Java,C#,php中)被"短路"(如果第一个操作数为真,则不评估第二个,因为表达式已被评估为真,无论第二个是什么.
所以这是经典的C风格"简洁".使用尽可能少的代码行,即使它与更长的代码完全相同.
所以它读取:如果定义(...),不要执行define()位...如果没有定义(),请尝试评估define()位,并在此过程中,它将定义常量.
其他人已经回答了您问题的第一部分,因此我将采用后者:
就orvs ||而言,在此特定情况下没有区别。然而,or具有较低的运算符优先级比=(赋值运算符),而||具有较高。如果您要使用短路进行分配,那么这很重要。
考虑:
$a = 2 or $b = 2;
var_dump($a); // int(2)
$a = 3 || $b = 3;
var_dump($a); // bool(true)
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,||在之前得到了评估=。使用括号看起来像这样
$a = (3 || $b = 3);
Run Code Online (Sandbox Code Playgroud)
而第一个
($a = 2) or ($b = 2);
Run Code Online (Sandbox Code Playgroud)