2010-07-10 1 views
18

Извините, если это звучит как действительно глупый вопрос.PHP короткое замыкание ленивой оценки, где это в руководстве php.net?

Но я googled в Интернете, а также Googled специально как сайт php.net, так и сайт stackoverflow.com. Я знаю, что PHP делает короткое замыкание ленивой оценки при использовании операторов and, or, &&, ||, но где это указано громко и ясно в руководстве PHP ???

Я нашел только Wikipedia как единственный «надежный» источник, который говорит, что PHP делает ленивую оценку этих операторов.

+0

Я не знаю, где это написано, но это принято как должное много раз, например, когда люди называют «mysql_connect (...) || die («Connection failed»); '. – zneak

+0

Самый надежный источник - это исходный код. И насколько я помню, когда я читал последний раз, это правда. –

+0

Имеет ли значение, что это считается официальным или нет? Это то, как работает PHP, с учетом этой идеи. –

ответ

9

Ближайшей вещь, которую я могу найти в «официальное» упоминание о реализации короткого замыкания в PHP: http://php.net/manual/en/language.operators.logical.php

+3

Это написано внутри фрагмента кода. Первый комментарий: '// foo() никогда не будет вызван, поскольку эти операторы имеют короткое замыкание – zneak

+0

Спасибо за помощь !!! Это не сказано громко и ясно, но оно написано там, а также с ясными примерами. –

+0

Как насчет короткого замыкания для '?:'? Давай, PHP, посмотри на [Java] (http://stackoverflow.com/a/978357/1402846). – Pang

1

Это не редкость особенности оценки экспрессии. Однако PHP manual page on logical operators делает ссылку на него в одном из иллюстративных примеров.

Оценка короткого замыкания - это обычно эксплуатируемая идиома, и вы можете положиться на ее постоянную поддержку на этом языке, иначе огромные количества кода сломались бы!