代码之家  ›  专栏  ›  技术社区  ›  alex

PHP速记语法

  •  1
  • alex  · 技术社区  · 15 年前

    我刚遇到 this 在吉瑟布上。

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

    这相当于

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

    这很平常吗?如果我使用第一种方法立即知道我的代码在做什么,我会期望其他开发人员看到我的代码吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   mpen    15 年前

    我花了一秒钟的时间才弄到它,但实际上它应该适用于几乎所有的编程语言。因为“and”或“or”运算符的计算比较慢,如果左边的语句为false,则不需要计算其余语句,因为整个表达式始终为false(false和true为false)。同样,你也可以用“或”来做,但是左边的陈述必须是正确的,然后右边的陈述必须是正确的。 不会 进行评估。

    PS: 在这种情况下,右边的不是一个布尔表达式并不重要;它只接受 $config

        2
  •  4
  •   Anthony Forloney    15 年前

    AND 是一个PHP逻辑运算符。

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

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

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

    就个人而言,为了避免任何混乱,我将使用您的第二种方法。

    推荐文章