У меня есть условное утверждение:
if($boolean && expensiveOperation()){ ...}
Есть ли у PHP ленивая логическая оценка, т. Е. Будет ли она проверять $boolean и если она ложна, не беспокоиться о выполнении дорогостоящей операции? Если да, то в каком порядке следует поместить мои переменные?
Да. Это называется оценкой короткого замыкания. См. Комментарии на странице документации …
Что касается заказа, он выполняет проверки на основе приоритета оператора, а затем слева направо. Так:
A || B || C
Сначала будет оценивать A, а затем B, только если A является ложным, а C – только если оба A и B являются ложными …
Но
A AND B || C
Всегда будет оценивать B || C B || C , так как || имеет более высокий приоритет, чем AND (не верно для && ).
Да, PHP делает оценку короткого замыкания .
PHP имеет оценку короткого замыкания. Ваш пример будет правильным использованием:
http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages