Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Операторы PHP: require(), require_once(), include_once()

Viktor | 24.02.2014 | нет комментариев

Функции 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() в PHP подставляет содержание одной веб-страницы, в другую web-страницу.

Но если вдруг мы по ошибке или умышленно в коде укажем два раза оператор include(), вот таким образом Листинг 2:

Листинг 2.

<?php

include (“blocks/header.php”);
include (“blocks/header.php”);

?>

То соответственно и логотип сайта тоже выведется два раза, примерно вот таким образом:

Оператор include() два раза подставляет содержание одной веб-страницы, в другую web-страницу.

Согласитесь, смотрится не очень красиво, правда? Получается, что оператор include() два раза вытаскивает из папки blocks файл header.php и два раза подставляется его на место шапки сайта.

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

На больших сайтах очень легко запутаться, где и какой файл Вы включали и можно ли включить его повторно, а это может привести к ошибке. Поэтому придумали приставку “_once” к функциям include и require, которая включает содержание файла в другую web-страницу только один раз.

Чем функция include() отличается от require()

Теперь давайте поговорим, чем функция include() отличается от функции require(). В самой работе у них отличий нет. И та и другая функции включают содержание одного файла в другой. Но отличие у них есть и заключается оно в способе реагирования на ситуацию, когда файла, который мы подключаем, не оказывается на месте.

Давайте вернемся к предыдущему примеру код Листинга 1. У нас есть следующий код:

<?php

include (“blocks/header.php”);

?>

Давайте попробуем удалить файл header.php, который мы собственно и подключаем, например файл поврежден или случайно был удален с севера.

Обновляем тестовый файл и видим вот такую ошибку:

При отсутствии подставляемого файла оператор include() выводит сообщение об ошибке, но остальное содержание веб-страницы отображается.

Как Вы видите, появилось сообщение о том, что в директории (папке) blocks не найден файл header.php, но программа дальше все равно выполняется и остальная часть web-страницы сайта отображается нормально.

А если мы напишем код (Листинг 3) используя функцию require():

Листинга 3.

<?php

require (“blocks/header.php”);

?>

То у нас будет выведено только одно сообщение об ошибке, и программа дальше выполняться не будет, и Вы увидете только вот такое сообщение:

При отсутствии подставляемого файла оператор require() выводит сообщение об ошибке, остальное содержание веб-страницы НЕ отображается.

Соответственно остальная часть web-страницы сайта вообще не работает.

Теперь Вы знаете в чем отличие функции include() от функции require(). Если где-то на практике Вы их встретите, то теперь будете знать, для чего они на самом деле применяются и как работают. Лично мне в большинстве случаев достаточно функции include().

Всего Вам доброго.

АВТОРСКИЕ ПРАВА
Источник: luksweb.ru
При перепечатке ссылка на источник обязательна
Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB