2010-03-19 2 views
0

Я только что наткнулся на this на GitHub.PHP синтаксис коротких строк

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

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

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

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

ответ

2

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

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

+0

Спасибо, это объяснение помогло мне лучше понять. – alex

3

AND является логическим оператором PHP.

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

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

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

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

Смежные вопросы