Какой смысл пытаться использовать 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 будет просто остановлен, фатальная ошибка будет сложнее обрабатывать, и вы не сможете показать пользователю какое-либо сообщение.