【发布时间】:2013-05-08 20:21:13
【问题描述】:
我一直在学习 php 课程,其中一个练习让我们创建了一个 config.php 文件,我们在其中定义了数据库常量。
我知道这样做的标准方法是:
define("NAME", "value");
但是,这个练习的写法不同。它是 if/else 的简写形式。 现在我知道它是正确的,因为它有效。 但我不明白 为什么 它有效。 希望这对您更有经验的开发人员来说是一个简单的答案:
defined('DB_SERVER') ? null : define('DB_SERVER', 'localhost');
我读它的方式是检查是否定义了 DB_SERVER。 如果为真,则将其设置为 NULL ?
如果该常量的值已经定义,为什么它会将其设为 NULL?
【问题讨论】:
-
尝试将其写成
if/else声明。 -
这并不是使用三元运算符的真正预期方式。除非你觉得自己是摇滚明星什么的。在这种情况下使用
if来提高可读性。 -
这真的不是一个很好的使用三元。如果我们想成为摇滚明星,我们应该写成
defined('DB_SERVER') || define('DB_SERVER', 'localhost');;) -
@DaggNabbit 或
defined('DB_SERVER') or define('DB_SERVER', 'localhost');,以防您需要在您的条件下使用&&。 -
@RobertK 将
&&或||与文本版本and和or混合是编写难以阅读的代码的好方法。你最好使用括号()。