Intereting Posts
Как сохранить значение выбранного пользователем параметра из выпадающего списка выбора в базу данных mysql? Как переопределить максимальное значение suhosin? Перехват маршрута Laravel Файл .user.ini работает только с 2 уровнями папки PHP change DOM useragent join query в codeigniter .htaccess вызывает бесконечный цикл на реальном сервере, но работает на localhost Терминал, передающий аргументы из переменной, содержащей пробелы Был запрошен псевдоним «ScnSocialAuth_ZendSessionManager», но никакая служба не найдена Как форматировать дату и время, которое получено из базы данных Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean задан в Неустранимая ошибка: вызов неопределенного метода GuzzleHttp \ Client :: request () с помощью Guzzle 6 Этот документ HTML Word отображается неправильно в OpenOffice.org Конвертация валюты с использованием PHP Помещение основных классов выше корня сети – хорошая или плохая идея?

PHP-поведение include / require внутри условного

Если я помещаю оператор include или require внутри условного выражения, который вычисляет значение false , интерпретатор PHP вообще пропустит включенный файл или загрузит его на всякий случай?

Примером может служить:

 if ($some_user_var) { require 'this.php'; } else { //do stuff } 

Я где-то читал, что require всегда будет включен интерпретатором независимо от условного, но include его не будет. Если это так, просто переход от require к include может означать бесплатное ускорение из-за уменьшения ввода-вывода и служебных данных синтаксического анализа.

Вероятно, это имеет значение, если я запускаю препроцессор, например eAccelerator, но давайте предположим, что я этого не делаю.

    Он будет включен только в том случае, если условие истинно. Я не знаю, где вы читаете иначе, но они ошибаются.

    Единственное различие между include и require заключается в том, что include будет вызывать предупреждение, если он терпит неудачу, тогда как require вызовет фатальную ошибку.

    Чтобы подтвердить это, обратитесь к справочной странице PHP, require .

    (ps – если вы делаете условное включение, в зависимости от того, что такое reaon, вы можете вместо этого использовать include_once() или require_once() ),

    Это неверно. require не будут включать файлы, которые обернуты в блоки, где они никогда не вызываются, интерпретатор php не игнорирует их. include и require незначительных различий в производительности (в этом отношении они не имеют большой разницы с _once, хотя это более важно).

    Я тоже что-то читал. Аргумент идет примерно так:

    Если вы установите условие вокруг include, PHP не имеет никакого способа узнать, требуется ли это или нет, пока он не начнет интерпретировать код, и он не может интерпретировать код до тех пор, пока он не захватит все переменные и функции и, следовательно, – файлы , Поэтому он ЗАГРУЖАЕТ все файлы независимо от состояния, а затем отбрасывает их из окончательной «компиляции».

    Хотя, опять же, если вы обертываете условие вокруг файла PHP с ошибкой в ​​нем, оно не прерывает его. И если вы объявляете переменную во включенном файле, а затем используете значение переменной, чтобы определить, включать ее или нет, она не получает ее значение 🙂

    Может быть, это было проблемой в старых версиях PHP?

    Я не тестировал его в отношении скорости загрузки и использования ОЗУ, но я хотел бы получить окончательный ответ на это. Есть ли накладные расходы, связанные с условными включениями?