В чем разница между требовать и включать с помощью php?

Я хочу знать, когда мне следует использовать include или require и в чем преимущество каждого из них.

Ответов (8)

Решение

requireтребует, includeвключает.

Согласно инструкции:

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

По http://www.alt-php-faq.org/local/78/ :

В отличие от include (), require () всегда будет читать в целевом файле, даже если строка, в которой он находится, никогда не выполняется. Если вы хотите условно включить файл, используйте include (). Условный оператор не повлияет на require (). Однако, если строка, в которой выполняется require (), не выполняется, ни один из кодов в целевом файле не будет выполнен.

Как уже говорили другие, если «require» не находит искомый файл, выполнение будет остановлено. Если include не сохранит искомый файл, выполнение будет продолжено.

Как правило, при импорте библиотек кода / классов / функций следует использовать require. Если вы попытаетесь вызвать функцию, создать экземпляр класса и т. Д., А определений нет, произойдут плохие вещи. Следовательно, вам нужно , чтобы php включил ваш файл, и если он не может, вы остановитесь.

Используйте include, когда вы используете PHP для вывода контента или иным образом выполняете код, который, если он не запускается, не обязательно уничтожит более поздний код. Классическим примером этого является реализация представления в рамках модели / представления / контроллера. В представлении не следует определять ничего нового и изменять состояние приложения. Следовательно, можно использовать include, потому что сбой не нарушит другие вещи, происходящие в приложении.

Одна небольшая касательная. Существует много противоречивой информации и неверной информации относительно производительности include vs. require vs. require_once vs. include_once. Они радикально отличаются друг от друга в разных ситуациях / сценариях использования. Это одно из тех мест, где вам действительно нужно измерить разницу в вашем собственном приложении.

Include and require are identical, except upon failure:

require will produce a fatal error (E_COMPILE_ERROR) and stop the script
include will only produce a warning (E_WARNING) and the script will continue

Вы можете понять это с помощью instance include ("test.php"); echo "\ nЭта строка будет напечатана";

Вывод: Предупреждение: include (test.php): не удалось открыть поток: нет такого файла или каталога в / var / www / ........ Эта строка будет напечатана

требуется ("test.php"); echo "\ nЭта строка будет напечатана"; Предупреждение: require (test.php): не удалось открыть поток: нет такого файла или каталога в / var / www / ....

Разница в следующем: include не завершится ошибкой, если не сможет найти ресурс, require will. Честно говоря, глупо, что include вообще существует, потому что, если вы пытаетесь загрузить ресурс, вы в значительной степени рассчитываете на его присутствие. Если вы собираетесь использовать что-либо, я бы рекомендовал всегда использовать require_once, чтобы вы не столкнулись с коллизиями (например, если другой сценарий требует тот же файл), и ваш код всегда работает так, как задумано, потому что вы знаете ресурсы, которые у вас есть. в том числе есть (в противном случае он не работает).

Если файл необязательный, включите его. Например, у вас может быть файл «break-news.txt», который создается, когда появляются последние новости, но не существует, когда их нет. Его можно было бы включить без прерывания сценария, если нет срочных новостей.

Если файл требуется для правильной работы остальной части сценария, потребуйте его.

Говоря простым языком, если мы используем require, мы должны быть уверены, что файл существует в ту эпоху, а в случае включения в этом нет необходимости. Но постарайтесь убедиться, что файл существует.

Require() и include() то же самое в отношении обработки отказов. Однако это require() приводит к фатальной ошибке и не позволяет обрабатывать страницу. т.е. include позволит сценарию продолжить работу.