В чем разница между «include_once» и «require_once» в PHP?
include_once "connect_to_mysql.php"; require_once "connect_to_mysql.php";
Есть ли разница между ними?
Include позволит скрипту работать (с предупреждением), если файл отсутствует.
Требование будет сбой, если он отсутствует.
Если вы используете include для вещей, которые на 100% опциональны, тогда включение будет по-прежнему работать и потребует взорваться.
Если вы включите что-то, что, по вашему мнению, не является обязательным, но какой-то другой фрагмент вашего скрипта использует его, путь вниз по линии, тогда ваш скрипт будет взорваться там, и вы, вероятно, не знаете, почему.
Это не хороший способ писать программы.
В противном случае между ними нет никакой разницы.
При типичном использовании не имеет значения, хотите ли вы использовать include
или require
95% случаев.
Таким образом, вы должны придерживаться require
(или require_once
), чтобы сообщить вам, когда вам не хватает файла, который вам нужен.
Ошибки, возникающие из-за включений файлов внутри включенных файлов, внутри входящих файлов, когда один из них содержит верхнюю часть, отсутствуют, очень сложно отслеживать.
Некоторые люди предпочитают include
, потому что они хотят использовать эту «особенность».
Douglas Crockford – это JavaScript / Java / C ++, а не PHP, но он предполагает, что для вашего здравомыслия следует избегать функций, которые выглядят как ошибки или побочные эффекты, неотличимые от ошибок.
Имейте в виду, что если весь ваш проект полностью основан на классе (или функциональный) и полностью модульный, то вам не нужно много использовать для включения, кроме, скажем, сброса значений объекта конфигурации при инициализации приложения (включая админ- переопределить параметры или опции отладки debuging) на объект, который уже require
d.
Как вы могли догадаться, есть и другие способы сделать это.
И это только предложения, но предложения, которые исходят от людей, которые умнее меня, с многолетним опытом работы на десятках языков.
include_once
выдаст предупреждение , но не остановит PHP на выполнение остальной части скрипта.
require_once
выдаст ошибку и остановит PHP от выполнения остальной части скрипта.
Разница в том, что require_once()
приведет к Fatal Error при сбое, в то время как include_once()
вызывает только предупреждение.
page stop execute require_once не может быть загруженным требуемым файлом, а с другой стороны include_once будет продолжаться вместо ошибки при загрузке, включая файл.