Сокращенный синтаксис PHP - PullRequest
1 голос
/ 19 марта 2010

Я только что натолкнулся на это на GitHub.

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

Это эквивалент

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

Это обычное дело? Могу ли я ожидать, что другие разработчики будут смотреть на мой код, если я воспользуюсь этим первым способом, чтобы мгновенно узнать, что он делает?

Ответы [ 2 ]

4 голосов
/ 19 марта 2010

И - логический оператор PHP.

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

имеет эквивалентный результат (, но имеет меньший приоритет оператора ) до

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

Лично, чтобы избежать путаницы, я бы использовал ваш второй подход.

2 голосов
/ 19 марта 2010

Мне потребовалась секунда, чтобы получить его, но на самом деле это должно работать практически на каждом языке программирования.Поскольку операторы «и» или «или» вычисляются лениво, если оператор слева является ложным, тогда нет необходимости оценивать остальные операторы, потому что все выражение всегда будет ложным (ложь и истина ложь).Аналогично, вы можете сделать это с помощью «или», но утверждение слева должно быть истинным, тогда вычисление справа не будет .

PS: В данном случае не имеет значения, что то, что справа, на самом деле не является логическим выражением;это просто примет значение истинности $config

...