php:define的用法

时间:2010-02-02 23:57:27

标签: php

<\ n>在Yii中,他们使用此代码:

 defined('YII_DEBUG') or define('YII_DEBUG',true);

我以前从未见过有人这样写过(或)。这是真正的PHP代码还是yii的一些语法?

3 个答案:

答案 0 :(得分:5)

基本上,如果defined("YII_DEBUG")的计算结果为false,则会定义它。有点像:

mysql_connect() or die("DIE!!!!!");

这是实际的PHP语法,只是不常用。它允许您不必写:

if(!defined("YII_DEBUG"))
{
    define("YII_DEBUG", true);
}

甚至更短

if(!defined("YII_DEBUG"))
    define("YII_DEBUG", true);

我猜他们用它来完全摆脱if语句。没有括号的第二个if语句会对编辑造成危害,第一个可能会为开发人员占用太多空间。

就个人而言,我只是因为它不是一个众所周知的特征而明确这一点。通过使用通常已知的语法(if语句),其他程序员不必怀疑它的作用。

(虽然,我现在可能会看到它。看起来很简单并且在条款中摆脱了不受欢迎的行为)

答案 1 :(得分:1)

这是由于短路评估。

如果defined('YII_DEBUG')返回false,它会尝试评估第二个表达式以使句子成立,将YII_DEBUG常量定义为true

最终结果是,如果未定义常量,则将其定义为true。如果它已经定义(值无关紧要),则不执行任何操作(因为第一个表达式为true,第二个表达式不需要计算表达式为真)。

答案 2 :(得分:1)

非常简单 - '或'运算符是高效的,因为它只会在需要时评估语句的第二部分。因此,如果第一部分的计算结果为true(已定义常量),则不执行define()调用。