PHP简写语法

时间:2010-03-19 04:48:20

标签: php syntax kohana-3

我刚刚在GitHub上遇到this

 ($config === NULL) and $config = Kohana::config('email');

这相当于

if ($config === NULL) {
    $config = Kohana::config('email');
}

这是司空见惯的吗?如果我使用第一种方式立即知道它在做什么,我会期望其他开发人员查看我的代码吗?

2 个答案:

答案 0 :(得分:4)

AND是一个PHP逻辑运算符。

($config === NULL) and $config = Kohana::config('email');

具有相同的结果(但有较小的operator precedence

($config === NULL) && $config = Kohana::config('email');

就个人而言,为了避免任何混淆,我会使用你的第二种方法。

答案 1 :(得分:2)

我花了一秒钟才得到它,但这实际上应该适用于几乎所有的编程语言。因为“和”或“或”运算符被懒惰地评估,如果左边的语句是假的,那么就不需要评估其余的语句,因为整个表达式将始终为false(false和true为false)。同样,您可以使用“或”来完成,但左侧的语句必须为true,然后右侧的将不会进行评估。

PS:在这种情况下,右边的内容实际上不是布尔表达式并不重要;它只会接受$config

的真值