[PHP] Short-circuited boolean evaluation
require/include/require_once/include_once - это тебе не обычные функции
из мануала:
из мануала:
<?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';
}
?>
Почитай внимательнее мануал про include/require.
И всё равно не делай так. Лучше распиши нормально, потом проще работать будет…
И всё равно не делай так. Лучше распиши нормально, потом проще работать будет…
Просто первый пост поправить забыл.
Конечно, вопрос в том, оба ли раза будет выполнена проверка на существование класса.
Конечно, вопрос в том, оба ли раза будет выполнена проверка на существование класса.
имхо, проверки именно сокращенные. Я часто делаю в одном IF'е сначала проверку на существовании ключа в массиве, а потом обращаюсь к этому ключу без @, при чем такая практика ни разу не привела к появлению каких-либо сообщений в логах (я не сторонник маскировать нотайсы).
То, что они сокращённые, следует из цитаты в первом посте.
Вопрос в том, не решит ли php сократить "сложное выражение" (типа a&&(b||a в b - это немного другое.
Вопрос в том, не решит ли php сократить "сложное выражение" (типа a&&(b||a в b - это немного другое.
Оставить комментарий
kruzer25
Это, конечно, всё очень хорошо, но мне интересно, будет ли работать код типаif(!class_exist("core",false) && (!(include_once("core.class.php" || !class_exist("core",false { die("Cannot load class \"core\"") }(то есть, в котором встречаются вызовы функций, влияющих на глобальные переменные - как include_once) так, как подразумевается - если класса нет и не удалось подключить файл или после подключения файла класса по-прежнему нет, выйти. То есть, не свернётся ли это a&&(b||a) в a? И документировано ли это, то есть, не изменится ли завтра поведение интерпретатора в таких случаях?