[PHP] Short-circuited boolean evaluation
![](/smiles/banghead.gif)
из мануала:
<?php
// won't work, evaluated as include'vars.php') == 'OK' i.e. include('')
if (include('vars.php') == 'OK') {
echo 'OK';
}
// works
if include 'vars.php') == 'OK') {
echo 'OK';
}
?>
И всё равно не делай так. Лучше распиши нормально, потом проще работать будет…
Конечно, вопрос в том, оба ли раза будет выполнена проверка на существование класса.
имхо, проверки именно сокращенные. Я часто делаю в одном IF'е сначала проверку на существовании ключа в массиве, а потом обращаюсь к этому ключу без @, при чем такая практика ни разу не привела к появлению каких-либо сообщений в логах (я не сторонник маскировать нотайсы).
Вопрос в том, не решит ли php сократить "сложное выражение" (типа a&&(b||a в b - это немного другое.
Оставить комментарий
kruzer25
Это, конечно, всё очень хорошо, но мне интересно, будет ли работать код типа(то есть, в котором встречаются вызовы функций, влияющих на глобальные переменные - как include_once) так, как подразумевается - если класса нет и не удалось подключить файл или после подключения файла класса по-прежнему нет, выйти. То есть, не свернётся ли это a&&(b||a) в a? И документировано ли это, то есть, не изменится ли завтра поведение интерпретатора в таких случаях?