Какой смысл пытаться использовать include
или include_once
библиотеку в PHP, если вам часто приходится использовать require
или require_once
вместо этого (поскольку они обычно критически важны)?
Зачем включать, когда вы можете потребовать в PHP?
Ответ 1
Разница между include
/include_once
и require
/require_once
заключается в том, что когда файл не найден, первый запускает предупреждение, в то время как последний вызывает ошибку. Мнения могут отличаться, но IMO, если необходимый файл отсутствует или доступен для чтения по какой-либо причине, это представляет собой очень сложную ситуацию, и я предпочел бы увидеть ошибку и прекратить выполнение, чем предупредить и продолжить выполнение в явно сломанном контексте. Поэтому я считаю, что лучше всего использовать require
/require_once
и избегать include
/include_once
вообще.
Ответ 2
Иногда вы включаете файлы из библиотек, которые вы не контролируете, или ваш код запускается в разных средах.
Возможно, некоторые из них на самом деле не требуются для вашего script, а являются вспомогательными файлами или дополнительными функциями.
Например, если ваш PHP генерирует HTML, вы можете использовать include для добавления баннера. Но вы не захотите, чтобы ваш файл остановился, если по какой-то причине этот файл баннера отсутствовал. Вы бы хотели изящно терпеть неудачу.
Ответ 3
включить - это попытка загрузить файл, но не останавливает выполнение, если он терпит неудачу
include_once - делает то же самое, что и "include", но выполняет дополнительную проверку, чтобы убедиться, что файл еще не был включен в текущий script
требуется - это попытка загрузить файл и выдает фатальную ошибку при ошибке
require_once - то же самое, что и "require", но выполняет дополнительную проверку, чтобы убедиться, что он загружен только один раз
Если вам не нужно использовать include_once или require_once, попробуйте избежать их, поскольку дополнительная проверка добавляет немного накладных расходов.
EDIT: я должен добавить, что ключевое различие заключается в том, что на уровне компилятора требуется сбой, а во время выполнения он включает ошибку.
Ответ 4
Требовать будет остановить script, если он не может включить файл.
Include будет выдавать сообщение.
Btw: * _ один раз работает медленно. Не следует использовать его, если вам действительно не нужно.
Ответ 5
Потому что вы не хотите, чтобы отсутствующие файлы останавливали ваше шоу.;)
Ответ 6
Очевидно, включает будет генерировать предупреждение...
Итак, если у вас есть потенциально отсутствующие файлы (например, динамически включая шаблоны, которые могут быть безопасными для отказа), и вы подавляете предупреждения (или не возражаете против раздутых журналов), то file_exists и require просто становится include.
Однако это не похоже на очень распространенный случай использования. Причина, по которой включает, по-прежнему очень распространена (Оккам-бритва?), Скорее всего, просто:
- include делает больше смыслового смысла и отображается на других языках.
Ответ 7
Все четыре могут принимать локальный файл или URL-адрес в качестве входных данных. require()
и include()
функции практически одинаковы по своей функции, за исключением того, как они обрабатывают безвозвратный ресурс. include()
и include_once()
выдает предупреждение, если ресурс не может быть извлечен, и попытайтесь продолжить выполнение программы (если возможно), в то время как функции require()
и require_once
перестают обрабатывать страницу, если они не могут найти ресурс.
Лучше всего использовать require_once()
для включения файлов, содержащих код и include_once()
, для включения файлов, которые не содержат кода, например. HTML, CSS и т.д. (Это мой подход, который может отличаться.)
Также читайте это: http://arin.me/blog/php-require-vs-include-vs-require_once-vs-include_once-performance-test
Ответ 8
Документация на http://tr.php.net/manual/en/function.include.php начинается с:
Оператор include() включает и оценивает указанный файл.
Приведенная ниже документация для запроса().
И документация на http://tr.php.net/manual/en/function.require.php говорит:
require() идентичен include() кроме случаев неудачи, создать смертельный E_COMPILE_ERROR уровень ошибка. Другими словами, он остановится script, тогда как include() выдает предупреждение (E_WARNING), которое позволяет script продолжить.
См. документацию include() для как это работает.
Я думаю, что достаточно:)
Ответ 9
Разница только в обработке ошибок, когда требуемого файла не существует: в случае include
вы можете легко обрабатывать предупреждение, изменять исполнение, чтобы показать обычную страницу "Извините, ошибка", отправить уведомление администратору сайта.
В случае require
ваш script будет просто остановлен, фатальная ошибка будет сложнее обрабатывать, и вы не сможете показать пользователю какое-либо сообщение.