Офис НП AMWAY в Ярославле
Купить продукцию Амвей в Ярославле, офис 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 4819  Прочтений 4819 Прочтений
 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
22830 5 Pisatel
26. мая 2017
folder Вопросы по Ajax форме обратной связи
CMS PHP Fusion
71728 48 Ditrin
19. февраля 2017
folder BBCode YouTube Video Colorbox mod
CMS PHP Fusion
15710 2 Pisatel
10. декабря 2016
folder Как лучше создать собственную страницу?
CMS PHP Fusion
18387 17 Pisatel
11. мая 2016
folder Небольшие вопросы по скриптам магазина и катало...
PHP, MySQL
150054 80 Pisatel
11. января 2016
folder BBCode Code mod
CMS PHP Fusion
14878 0 Pisatel
31. августа 2015
folder Ajax Like Dislike Article Panel
CMS PHP Fusion
23181 16 Pisatel
07. июля 2015
folder Хлебные крошки / BreadCrumbs SEO Panel
CMS PHP Fusion
26969 17 Pisatel
04. июля 2015
folder Abbr Description BBCode
CMS PHP Fusion
7826 0 Pisatel
15. июня 2015
folder Плагин Email рассылки Mail To All by Pisatel
CMS PHP Fusion
38075 32 Pisatel
26. апреля 2015
folder Подозрительный трафик и прочие страшилки
Всякая хрень
12016 2 Ditrin
23. апреля 2015
folder Мод Newsletter - рассылка писем пользователям с...
CMS PHP Fusion
31452 13 Pisatel
10. апреля 2015
folder Мод отправки писем PHPMailer для PHP-Fusion
CMS PHP Fusion
133258 113 Ditrin
06. апреля 2015
folder Появление неизвестного файла subscriptions.php
CMS PHP Fusion
8994 2 Pisatel
06. апреля 2015
folder Autoban on IP
CMS PHP Fusion
23504 13 Pisatel
03. апреля 2015