Операторы include()
и require()
позволяют включать код, содержащийся в файле PHP в другой файл PHP. Включение файла дает тот же результат, что и копирование скрипта из указанного файла и вставка в место, где он был вызван.
Эти функции помогут вам сэкономить много времени — просто сохраните блок кода в отдельном файле и подключите его куда угодно, используя операторы include()
и require()
вместо того, чтобы набирать весь блок кода несколько раз. Типичный пример — подключение файлов header
, footer
и menu
на все страницы веб-сайта.
Базовый синтаксис операторов include()
и require()
может быть задан следующим образом:
include("path/to/filename"); -Or- include "path/to/filename";
require("path/to/filename"); -Or- require "path/to/filename";
Как и операторы print
и echo
, вы можете опустить круглые скобки при использовании операторов include
и require
, как показано выше.
В следующем примере показано, как подключить отдельные файлы header.php
, footer.php
и menu.php
на всех страницах вашего веб-сайта. Используя этот метод, вы можете обновлять все страницы веб-сайта сразу, внося изменения только в один файл, что избавляет от множества повторяющихся действий.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Zolin Digital</title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
<h1>Добро пожаловать на наш сайт!</h1>
<p>Здесь вы найдете много полезной информации.</p>
<?php include "footer.php"; ?>
</body>
</html>
Разница между операторами include() и require()
Вы можете подумать: если мы можем включать файлы с помощью оператора include()
, тогда зачем нам require()
. Обычно оператор require()
работает как include()
.
Единственное отличие заключается в том, что оператор include()
будет генерировать только предупреждение PHP, но позволит продолжить выполнение скрипта, если файл, который нужно включить, не может быть найден, тогда как оператор require()
вызовет фатальную ошибку и остановит выполнение скрипта.
<?php require "my_variables.php"; ?>
<?php require "my_functions.php"; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<title><?php displayTitle($home_page); ?></title>
</head>
<body>
<?php include "header.php"; ?>
<?php include "menu.php"; ?>
<h1>Добро пожаловать на наш сайт!</h1>
<p>Здесь вы найдете много полезной информации.</p>
<?php include "footer.php"; ?>
</body>
</html>
Рекомендуется использовать оператор require()
, если вы включаете файлы библиотеки или файлы, содержащие функции и переменные конфигурации, которые необходимы для запуска вашего приложения, например файл конфигурации базы данных.
Операторы include_once и require_once
Если вы случайно включите один и тот же файл (обычно файлы функций или классов) в код более одного раза с помощью операторов include
и require
, это может вызвать конфликты. Чтобы предотвратить эту ситуацию, PHP предоставляет операторы include_once
и require_once
. Эти операторы ведут себя так же, как операторы include
и require
, за одним исключением.
Операторы include_once
и require_once
будут включать файл только один раз, даже если будет предложено включить его второй раз, т.е. если указанный файл уже был включен в предыдущий оператор, файл не включается снова. Чтобы лучше понять, как это работает, давайте рассмотрим пример. Предположим, у нас есть файл my_functions.php
со следующим кодом:
<?php
function multiplySelf($var) {
$var *= $var; // умножаем переменную на саму себя
echo $var;
}
?>
Вот PHP-скрипт, в который мы включили файл my_functions.php
.
<?php
// Подключаем файл через require
require "my_functions.php";
// Вызываем функцию
multiplySelf(2); // Выводит: 4
echo "<br>";
// Подключаем файл через require
require "my_functions.php";
// Вызываем функцию
multiplySelf(5); // Функция не выполняется
?>
Когда вы запустите приведенный выше скрипт, вы увидите сообщение об ошибке примерно такого рода: «Fatal error: Cannot redeclare multiplySelf(). Это происходит из-за того, что my_functions.php
подключен дважды и функция multiplySelf()
определяется дважды, что заставило PHP остановить выполнение скрипта и сгенерировать фатальную ошибку. Теперь перепишем приведенный выше пример с помощью require_once
.
<?php
// Подключаем файл через require_once
require_once "my_functions.php";
// Вызываем функцию
multiplySelf(2); // Выводит: 4
echo "<br>";
// Подключаем файл через require_once
require_once "my_functions.php";
// Вызываем функцию
multiplySelf(5); // Выводит: 25
?>
Как видите, при использовании require_once
вместо require
скрипт работает так, как мы того ожидаем.