2

我一直在学习 php 课程,其中一个练习让我们创建了一个 config.php 文件,我们在其中定义了数据库常量。

我知道这样做的标准方法是:

define("NAME", "value");

然而,这个练习有不同的写法。它是 if/else 的简写形式。现在我知道它是正确的,因为它有效。但我不明白为什么它有效。希望这对您更有经验的开发人员来说是一个简单的答案:

defined('DB_SERVER') ? null : define('DB_SERVER', 'localhost');

我阅读它的方式是检查是否定义了 DB_SERVER。如果它是真的,那么它将它设置为 NULL ?

如果它已经定义,为什么它会将那个常量的值清空?

4

2 回答 2

4

如果它被定义,它会运行表达式null,它本质上是一个 noop(什么都不做)。否则,它实际上运行define. 你可以像defined('DB_SERVER') ?: define('DB_SERVER', 'localhost')现在这样写,但我个人认为这很混乱。我会简单地把它写成:

if (!defined('DB_SERVER')) {
    define('DB_SERVER', 'localhost');
}
于 2013-05-08T20:23:49.290 回答
1

这是长手形式:

if ( defined('DB_SERVER') )
{
    // Do nothing
}
else
{
    define('DB_SERVER', 'localhost');
}

用英语讲:

如果有人已经定义了“DB_SERVER”,请不要管它

否则,使用 'localhost' 的值定义它

于 2013-05-08T20:25:09.570 回答