Операторы PHP: require(), require_once(), include_once()
Автор: Андрей Краснокутский
Дата: 2012-10-15 Функции PHP: require(), require_once(), include(), include_once()
В прошлом уроке мы подробно разобрали работу оператора include(). Напомню, что оператор include() в PHP подставляет содержание одной веб-страницы, в другую web-страницу. Но в PHP есть и другие функции, позволяющие реализовать аналогичную задачу. В частности это функции:
include_once()
require()
require_once()
Чтобы вставить содержание определенной web-страницы, достаточно в качестве аргумента (в скобках) этих функций указать путь к нужному файлу. Например, вот так:
include("file.php") или require("file.php")
Задача у всех этих функций одна и та же: вставить нужный код или текст из одного файла в другой файл. Но, все-таки, эти функции отличаются между собой. Давайте разбираться чем.
Суффикс "_once" позволяет подключить код файла для подстановки в другой файл только один раз, сколько бы вызовов не осуществлялось. Для наглядности давайте разберем простой пример. В прошлом уроке мы разобрались, что с помощью оператора include(), можно вынести шапку сайта в отдельный файл header.php, для простоты будем считать, что в этот файл мы выносим графический логотип сайта. В нужном месте web-страницы (в данном случае на месте шапки сайта) прописываем код Листинга 1.
Листинг 1.
<?php
include ("blocks/header.php");
?>
|
Соответственно на экране монитора на месте шапки сайта мы увидим логотип нашего сайта, примерно вот так:

Но если вдруг мы по ошибке или умышленно в коде укажем два раза оператор include(), вот таким образом Листинг 2:
Листинг 2.
<?php
include ("blocks/header.php");
include ("blocks/header.php");
?>
|
То соответственно и логотип сайта тоже выведется два раза, примерно вот таким образом:

Согласитесь, смотрится не очень красиво, правда? Получается, что оператор include() два раза вытаскивает из папки blocks файл header.php и два раза подставляется его на место шапки сайта.
А вообще, во включаемом файле могут быть такие функции, которые при их добавлении в исходный файл, могут выдавать ошибки и ваша веб-страница вообще может не загрузиться.
На больших сайтах очень легко запутаться, где и какой файл Вы включали и можно ли включить его повторно, а это может привести к ошибке. Поэтому придумали приставку "_once" к функциям include и require, которая включает содержание файла в другую web-страницу только один раз.
Чем функция include() отличается от require()
Теперь давайте поговорим, чем функция include() отличается от функции require(). В самой работе у них отличий нет. И та и другая функции включают содержание одного файла в другой. Но отличие у них есть и заключается оно в способе реагирования на ситуацию, когда файла, который мы подключаем, не оказывается на месте.
Давайте вернемся к предыдущему примеру код Листинга 1. У нас есть следующий код:
<?php
include ("blocks/header.php");
?>
|
Давайте попробуем удалить файл header.php, который мы собственно и подключаем, например файл поврежден или случайно был удален с севера.
Обновляем тестовый файл и видим вот такую ошибку:

Как Вы видите, появилось сообщение о том, что в директории (папке) blocks не найден файл header.php, но программа дальше все равно выполняется и остальная часть web-страницы сайта отображается нормально.
А если мы напишем код (Листинг 3) используя функцию require():
Листинга 3.
<?php
require ("blocks/header.php");
?>
|
То у нас будет выведено только одно сообщение об ошибке, и программа дальше выполняться не будет, и Вы увидете только вот такое сообщение:

Соответственно остальная часть web-страницы сайта вообще не работает.
Теперь Вы знаете в чем отличие функции include() от функции require(). Если где-то на практике Вы их встретите, то теперь будете знать, для чего они на самом деле применяются и как работают. Лично мне в большинстве случаев достаточно функции include().
Всего Вам доброго.
Читайте так же:
Оператор PHP include ()
Как сделать функцию Поиск по сайту (блогу)
Как влияет разрешение монитора на посещаемость сайта
C чего начинать свой Интернет-Бизнес?
Как и Сколько можно заработать в Интернете?
Просмотров: 15488
|