Подтвердить что ты не робот

Зачем включать, когда вы можете потребовать в PHP?

Какой смысл пытаться использовать include или include_once библиотеку в PHP, если вам часто приходится использовать require или require_once вместо этого (поскольку они обычно критически важны)?

4b9b3361

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