Включение файлов PHP

Серверное включение (SSI) используется для создания функций, заголовков, подвалов или элементов, которые можно повторно использовать на нескольких страницах.

Операторы include (или require) получают все существующие тексты/код/теги из указанного файла и копируют их в файл, использующий оператор include.

Включение файлов полезно, если вам нужно ссылаться на один и тот же PHP, HTML или текст на нескольких страницах сайта.

Операторы include и require в PHP

С помощью операторов include или require можно вставить содержимое PHP-файла в другой PHP-файл (до его выполнения на сервере).

Операторы include и require идентичны, за исключением обработки ошибок:

  • require генерирует критические ошибки (E_COMPILE_ERROR) и останавливает скрипт
  • include генерирует только предупреждения (E_WARNING), и скрипт продолжает выполняться

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

Включение файлов экономит много работы. Это означает, что вы можете создать стандартные файлы заголовка, подвала или меню для всех страниц. Затем, при необходимости обновить заголовок, вам нужно только обновить этот файл включения.

Грамматика

include 'filename';

или

require 'filename';

Пример использования include в PHP

Пример 1

Предположим, что у нас есть стандартный файл подвала с именем "footer.php", как это:

<?php
echo "<p>Copyright © 2006-" . date("Y") . " codew3c.com</p>";
?>

Если нужно включить этот файл подвал в одну страницу, используйте оператор include:

<html>
<body>
<h1>Добро пожаловать на нашу домашнюю страницу!</h1>
<p>Текст абзаца.</p>
<p>Текст абзаца.</p>
<?php include 'footer.php';?>
</body>
</html>

Пример выполнения

Пример 2

Предположим, что у нас есть стандартный файл меню с именем "menu.php":

<?php
echo '<a href="/index.asp">Главная страница</a> -
<a href="/html/index.asp">Уроки HTML</a> -
<a href="/css/index.asp">Уроки CSS</a> -
<a href="/js/index.asp">Уроки JavaScript</a> -
<a href="/php/index.asp">Уроки PHP</a>';
?>

Все страницы сайта используют этот файл меню. Конкретный подход таков (мы используем элемент <div>, чтобы в будущем можно было легко устанавливать стили через CSS):

<html>
<body>
<div class="menu">
<?php include 'menu.php';?>
</div>
<h1>Добро пожаловать на мою домашнюю страницу!</h1>
<p>Немного текста.</p>
<p>Немного больше текста.</p>
</body>
</html>

Пример выполнения

Пример 3

Предположим, что у нас есть файл с именем "vars.php", в котором определены некоторые переменные:

<?php
$color='Серебристый';
$car='Бenz';
?>

Затем, если мы сослаться на этот файл "vars.php", мы можем использовать эти переменные в файле вызова:

<html>
<body>
<h1>Добро пожаловать на мою домашнюю страницу!</h1>
<?php
include 'vars.php';
echo "У меня есть" . $color . $car . ".";
?>
</body>
</html>

Пример выполнения

PHP include vs. require

Предложение require также используется для включения файлов в PHP-код.

Однако, у include и require есть значительная разница: если файл указан предложением include, и PHP не может найти его, скрипт продолжит выполняться:

Пример

<html>
<body>
<h1>Добро пожаловать на мою домашнюю страницу!</h1>
<?php
include 'noFileExists.php';
echo "У меня есть $color $car.";
?>
</body>
</html>

Пример выполнения

Если мы завершим этот пример с помощью предложения require, предложение echo не продолжит выполняться, так как после серьезной ошибки, возвращенной предложением require, выполнение скрипта будет остановлено:

Пример

<html>
<body>
<h1>Добро пожаловать на мою домашнюю страницу!</h1>
<?php
require 'noFileExists.php';
echo "У меня есть $color $car.";
?>
</body>
</html>

Пример выполнения

Комментарий:

Используйте require в этом случае: когда файл запрашивается приложением.

Используйте include в этом случае: когда файл не является необходимым, и приложение должно продолжать работать, если файл не найден.