Телефон: +7 (926) 245-03-63

require и include - какая между ними разница?

Общее

Часто приходится хранить всякие везде-используемые данные/функции в отдельных файлах, и потом подключать, используя include[_once]/require[_once]. Но эти файлы обычно не парсятся сервером, то есть, их можно смотреть через браузер, этого мы и хотим избежать. Давать таким файлам расширение .php не очень правильно, так как их можно вызвать через браузер, и, хотя мы и не увидим содержимое, но, наверняка, у нас начнут вылазить какие-либо ошибки PHP, так как код внутри файлов обычно расчитан на исполнеие в определенном окружении (наличие коннекта к базе чтение файлов/определенные значения констант/переменных). Есть 2 выхода по сути похожих

  • поместить все .inc файлы за пределами DOCUMENT_ROOT Apache
  • написать .htaccess чтобы запретить доступ ко всем файлам с определенными расширениями

Пример:

# запретить скачивание файлов с указанными расширениями
<FilesMatch ".(inc|sql|…другие расширения…)$">
order deny,allow

# запретить доступ отовсюду
deny from all

# разрешить доступ с вашего ip(если он у вас, конечно, статический)
allow from <ваш ip>
</FilesMatch>

require

Загружает и вставляет код в PHP скрипт. Если такого файла, кода нет в наличии, прекращается дальнейшая работа всего php скрипта. В случае если будет вызываться такая же инструкция в том же скрипте, то будет либо ошибка либо игнорирование загрузки файла - то есть будет тупо возвращена пустота.

Используется в основном для загрузки PHP функций и наработанных библиотек.

Варианты вызова:

require 'файл';
require('файл');// такой мне больше нравится, четче видно

include

Загружает и вставляет код в PHP скрипт. Если такого файла, кода нет в наличии, то основной php скрипт переходит к выполнению кода после оператора include .В случае, если файл уже был ранее загружен то он загрузится повторно. Нельзя использовать для загрузки одних и тех модулей с функциями, будет ошибка.

Используется в основном для загрузки HTML вставок в страницы.

Варианты вызова:

include 'файл';
include ('файл');// такой мне больше нравится, четче видно

Существуют также еще функции require_once и include_once, приставка once означает загрузку данных в PHP скрипт только один раз. Если такая функция встретится два раза в одном скрипте, то код будет выполнен только у первого этапа, все остальные будут проигнорированы, тем самым увеличив скорость выполнения скрипта.

Интересное в интернете: квартиры в новостройках СПб