Заметки по PHP: include или require?

04 Авг 2010

include и requireКак я говорил раньше, блог обновляться будет редко. С перерывом в почти два месяца публикую еще одну статью, которую в первую очередь пишу для себя, как заметку.

Хотелось бы разобраться с этими двумя замечательными конструкциями языка PHP — include и require. Обе они служат для включения файлов в PHP скрипт, но каждая работает по своему.

Конструкция require включает файлы перед тем, как скрипт начинает свое выполнение, то есть сначала полностью из кусочков собирается весь скрипт, а затем полностью выполняется.

Include в отличии от require включает файлы по мере выполнении скрипта. То есть сценарий выполняется пошагово и дойдя до include переключается на выполнение включаемого файла.

Чтобы понять разницу между конструкциями демонстрируют следующий пример:
Существует 5 файлов: ‘page1.php‘, ‘page2.php‘, …, ‘page5.php‘, каждый из которых содержит числа 1, 2, …, 5 соответственно.

< ?php
// В цикле включаем файлы с помощью include
for($i=1; $i<=5; $i++) { include 'page'.$i.'.php'; } ?>

В результате на экране получим следующее: 12345. В этом примере конструкция включения фалов работает динамически, то есть результат зависит от выполнения скрипта.
При использовании require, включение файлов до выполнения скрипта вызовет ошибку.

Так где какую конструкцию использовать?
Это можно понять из продемонстрированного примера. Include применять там, где требуется динамическое включение файлов, а require там, где этого не требуется.

Помимо require и include хотел сказать пару слов про конструкции require_once и include_once. В отличие от предыдущих, эти две конструкции позволяют включать файл всего один раз за все время выполнение сценария даже если вы сделали это два или более раз. Перед тем как включить в тело скрипта очередной файл эти конструкции проверяют не был ли указанный файл включен раннее.

Это всё, напоследок хочу поделиться интересной статьей про то, что лучше использовать апострофы или кавычки при написании php скрипта.

Забобрить!
Запомнить эту страницу на Закладок.нет!
www.vaau.ru
Уважаемый читатель! Если мой блог Вам понравился, то предлагаю подписаться на обновление по RSS или по E-mail. У меня так же есть аккаунт в Twitter, за которым Вы можете следовать.

3 комментария

# mrkto оставил(а) комментарий 06 Авг 2010 в 17:06

require() в отличии от include() если не находит файл вызывает Fatal error, а не Warning. Соответственно requre_once() используется для включения необходимых модулей. А include() для каких-нибудь файлов шаблонов.

Хотя Фатальная ошибка и называется E_COMPILE_ERROR, динамически require использовать можно: require ‘page’.rand(1,3).’.php’;
Может это пережиток PHP 3. Но PHP 4/5 предварительно только проверяет синтаксис и заголовки функций / конструкцию классов. (вроде так)

Ответить
# Никита Красноярцев оставил(а) комментарий 08 Авг 2010 в 23:00

mrkto, действительно, спасибо. Прочитал сейчас в оригинальном мануале на английском языке.
include() — [ссылка]
require() — [ссылка]

Ответить
# Канат Гайлимов оставил(а) комментарий 10 Авг 2010 в 01:13

Еще require быстрее include, хотя это не так уж и важно :)

Ответить

Добавить комментарий

Псевдоним*:
Эл. почта*:
Сайт: