Я хочу знать, когда я должен использовать include
или require
и в чем преимущество каждого из них.
require
требования, include
себя.
Согласно руководству:
require () идентичен include (), за исключением отказа, это приведет к фатальной ошибке уровня E_ERROR. Другими словами, он остановит скрипт, тогда как include () только выдает предупреждение (E_WARNING), которое позволяет сценарию продолжить.
Как говорили другие, если «require» не находит файл, который он ищет, выполнение останавливается. Если include не подает файл, который он ищет, выполнение будет продолжено.
В общем случае требование необходимо использовать при импорте библиотек кода / класса / функций. Если вы попытаетесь вызвать функцию, создайте экземпляр класса и т. Д., А определений там нет, произойдет Bad Things. Поэтому вам нужно , чтобы php включал ваш файл, и если он не может, вы остановитесь.
Используйте include, когда вы используете PHP для вывода контента или иным образом выполняете код, который, если он не запускается, не обязательно уничтожит более поздний код. Классическим примером этого является реализация представления в структуре Model / View / Controller. Ничего нового не должно быть определено в представлении и не должно изменяться состояние приложения. Таким образом, это нормально использовать include, потому что сбой не нарушит другие вещи, происходящие в приложении.
Одна маленькая касательная. Существует много противоречивой информации и неправильной информации о производительности include vs. require vs. require_once vs. include_once. В разных ситуациях / прецедентах они радикально отличаются друг от друга. Это одно из тех мест, где вам действительно нужно сопоставить разницу в вашем собственном приложении.
Разница заключается в следующем: include не будет терпеть неудачу, если он не сможет найти ресурс, потребует. Честно говоря, это глупость, которая включает в себя вообще, потому что, если вы пытаетесь загрузить ресурс, вы в значительной степени рассчитываете на то, что он там. Если вы собираетесь использовать что-либо, я бы рекомендовал использовать require_once всегда, чтобы вы не столкнулись с конфликтами (например, если для другого скрипта требуется один и тот же файл), и ваш код всегда работает по назначению, потому что вы знаете, какие ресурсы вы используете в том числе есть (в противном случае он терпит неудачу).
Если файл является необязательным, включите его. Например, у вас может быть файл «break-news.txt», который создается, когда появляются новости, но не существует, когда их нет. Он может быть включен без нарушения скрипта, если нет новостей.
Если файл необходим для того, чтобы остальная часть скрипта функционировала должным образом, требуйте его.
Per http://www.alt-php-faq.org/local/78/ :
В отличие от include (), require () всегда будет считываться в целевом файле, даже если строка, в которой она включена, никогда не выполняется. Если вы хотите условно включить файл, используйте include (). Условное утверждение не будет влиять на require (). Однако, если строка, на которой выполняется требование (), не выполняется, ни один из кода в целевом файле не будет выполнен.
На простом языке, если мы используем его, мы должны убедиться, что файл существует в эту эпоху, в то время как нет необходимости в случае включения. Но попробуйте убедиться, что файл существует.
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
Вы можете понять, что на экзамене есть («test.php»); echo "\ nЭта строка будет напечатана";
Выход: Предупреждение: include (test.php): не удалось открыть поток: нет такого файла или каталога в / var / www / …….. Эта строка будет напечатана
требуют ( "test.php"); echo "\ nЭта строка будет напечатана"; Предупреждение: require (test.php): не удалось открыть поток: нет такого файла или каталога в / var / www / ….
Require()
и include()
совпадают с ошибками обработки. Однако require()
приводит к фатальной ошибке и не позволяет обрабатывать страницу. т.е. include позволит сценарию продолжить.