【发布时间】:2011-07-25 15:46:44
【问题描述】:
我在使用 CodeIgniter 数据库迁移时注意到了这段代码:
$this->migrations->verbose AND print "Creating table '{$table}'...";
$verbose 是一个配置值。
我们在办公室就这是否是有效且可读的代码进行了辩论。如果第一部分为真,它基本上取代了对 IF 语句的需求,因为它执行条件的第二部分。我其实很喜欢它,但办公室里的人认为它的工作是一个意外,而且这将更具可读性:
if( $this->migrations->verbose ) print "Creating table '{$table}'...";
你怎么看?
【问题讨论】:
-
我会避免这种情况,因为在许多语言中,不能保证 AND 会从左到右进行评估。所以即使它在这里工作得很好,它的逻辑也不是通用的。
-
@Luke,在我知道的大多数语言中,都可以保证这一点,而且 PHP 肯定是其中之一:)
-
我知道,很明显这在 PHP 中是正确的,但从概念上来说,AND 并不能保证。
-
感谢所有 cmets 人。自从我发帖以来,我实际上已经在 CodeIgniter 库的其他地方看到了它——我可能会坚持使用后者,因为老板是这么说的:)
标签: php codeigniter if-statement conditional