Офис НП AMWAY в Ярославле
Купить продукцию Амвей в Ярославле
На карте Купить AMWAY в ЯрославлеПриобрести высококачественную продукцию Амвей в Ярославле, получить консультации по бизнесу, заказать продукцию или получить заказ:
Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
Телефон: +7 (920) 112-00-91
Email: matyxho@mail.ru
Сайт: https://www.amway.ru/user/lebedem
Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » include, include_once, require, require_once- в чем же отличия?
Сниппет
PHP: Попробуем вместе понять, что это за конструкции, когда и какую из них использовать предпочтительнее.
include, include_once, require, require_once- в чем же отличия?
Опубликовал  Pisatel Pisatel Добавлено  16-02-2013 17:26 16 Февраль 2013 17:26:41 4761  Прочтений 4761 Прочтений
 printer
Во- первых, многие называют это Функциями( я тоже был среди вас, не парьтесь), однако на самом деле- это конструкции включений. В чем же основные различия? Попробуем разобраться.

Конструкция require



По-простому, она позволяет подключить файл в сценарий PHP до исполнения сценария. При запуске программы интерпретатор просто заменит инструкцию на содержимое "реквариваемого" файла, который может содержать как .html- код, так и PHP. Это весьма удобно для подключения всевозможных шаблонов и т.п.

Далее. Конструкция require поддерживает подключение удаленных файлов, то есть если ты сделаешь вот так
PHP
  1. <?php
  2. require ;
  3. ?>
, то эта конструкция сработает.

Конструкция include



Данная конструкция также предназначена для подключения файлов, однако, в отличии от require, делает она это во время исполнения сценария PHP. Далее я приведу пример с сайта www.php.su, так как он весьма наглядно показывает различия.

Создадим 10 файлов: 1.txt, 2.txt ... 10.txt, содержащих по одной цифре в каждом, от 1 до 10. Далее создадим сценарий PHP
PHP
  1. <?php
  2. for($i=1; $i<=10; $i++) {
  3. include "$i.txt";
  4. }
  5. ?>


А вот если бы мы поставили require, то получили бы на выходе критическую ошибку.

PHP преобразует сценарий во внутреннее представление, анализируя строки сценария по очереди, пока не доходит до конструкции include. Дойдя до include, PHP прекращает транслировать сценарий и переключается на указанный в include файл. Таким образом, из-за подобного поведения транслятора, быстродействие сценария снижается, особенно при большом колличестве подключаемых с помощью include файлов. С require таких проблем нет, поскольку файлы с помощью require включаются до выполнения сценария, то есть на момент трансляции файл уже включен в сценарий. Конструкция include так же поддерживает подключение удаленных файлов, лишь бы это было включено в настройках PHP.

Конструкции однократного включения require_once и include_once



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

Небольшое примечание: под разными OS эти конструкции могут быть регистрозависимыми или нет. То есть, иногда конструкция может посчитать, что /file.php и /File.php - это два разных файла, и наоборот.
Понравилась статья?
Метки для данной статьи
Поделиться:   
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
folder Вопрос по переделке bb-кода
PHP, MySQL
22341 5 Pisatel
26. мая 2017
folder Вопросы по Ajax форме обратной связи
CMS PHP Fusion
68644 48 Ditrin
19. февраля 2017
folder BBCode YouTube Video Colorbox mod
CMS PHP Fusion
15363 2 Pisatel
10. декабря 2016
folder Как лучше создать собственную страницу?
CMS PHP Fusion
17911 17 Pisatel
11. мая 2016
folder Небольшие вопросы по скриптам магазина и катало...
PHP, MySQL
144933 80 Pisatel
11. января 2016
folder BBCode Code mod
CMS PHP Fusion
14428 0 Pisatel
31. августа 2015
folder Ajax Like Dislike Article Panel
CMS PHP Fusion
22568 16 Pisatel
07. июля 2015
folder Хлебные крошки / BreadCrumbs SEO Panel
CMS PHP Fusion
26269 17 Pisatel
04. июля 2015
folder Abbr Description BBCode
CMS PHP Fusion
7669 0 Pisatel
15. июня 2015
folder Плагин Email рассылки Mail To All by Pisatel
CMS PHP Fusion
37030 32 Pisatel
26. апреля 2015
folder Подозрительный трафик и прочие страшилки
Всякая хрень
11804 2 Ditrin
23. апреля 2015
folder Мод Newsletter - рассылка писем пользователям с...
CMS PHP Fusion
31046 13 Pisatel
10. апреля 2015
folder Мод отправки писем PHPMailer для PHP-Fusion
CMS PHP Fusion
128459 113 Ditrin
06. апреля 2015
folder Появление неизвестного файла subscriptions.php
CMS PHP Fusion
8848 2 Pisatel
06. апреля 2015
folder Autoban on IP
CMS PHP Fusion
23196 13 Pisatel
03. апреля 2015