Главная
Блог разработчиков 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
При перепечатке ссылка на источник обязательна
Оставить комментарий

Ваш email не будет опубликован. Обязательные поля помечены (обязательно)

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2014 © BB3x.ru - русская поддержка форума phpBB