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