Конструкция включений require
Конструкция require позволяет включать файлы в PHP сценарий до выполнения сценария PHP. Общий синтаксис require такой:
require имя_файла;
При запуске (именно при запуске, а не при исполнении!) программы интерпретатор просто заменит инструкцию на содержимое файла имя_файла (этот файл может также содержать сценарий на PHP, обрамленный, как обычно, тэгами <? и ?>). Причем сделает он это непосредственно перед запуском программы (в отличие от include, который рассматривается ниже). Это бывает довольно удобно для включения в вывод сценария различных шаблонных страниц HTML-кодом. Приведем пример:
Файл header.html:
<html>
<head><title>It is a title</title></head>
<body bgcolor=green>
Файл footer.html:
© Home Company, 2005.
</body></html>
Файл script.php
<?php
require "header.htm";
// Сценарий выводит само тело документа
require "footer.htm";
?>
Таким образом, конструкция require позволяет собирать сценарии PHP из нескольких отдельных файлов, которые могут быть как html-страницами, так и php-скриптами.
Конструкция require поддерживает включения удаленных файлов (начиная с версии PHP 4.3.0). Например:
<?php
// Следующий пример на работает, поскольку пытается включить локальный файл
require 'file.php?foo=1&bar=2';
// Следующий пример работает
require 'http://www.example.com/file.php?foo=1&bar=2';
?>
! Конструкция require позволяет включать удаленные файлы, если такая возможность включена в конфигурационном файле PHP.
Включения удаленных файлов
PHP позволяет работать с объектами URL, как с обычными файлами. Упаковщики, доступные по умолчанию, служат для работы с удаленными файлами с использованием протокола ftp или http.
Если "URL fopen-оболочки" включены в PHP (как в конфигурации по умолчанию), вы можете специфицировать файл, подключаемый с использованием URL (через HTTP), вместо локального пути. Если целевой сервер интерпретирует целевой файл как PHP-код, переменные могут передаваться в подключаемый файл с использованием URL-строки запроса, как в HTTP GET. Строго говоря, это не то же самое, что подключение файла и наследование им области видимости переменных родительского файла; ведь скрипт работает на удалённом сервере, а результат затем подключается в локальный скрипт.
Для того, чтобы удаленное включение файлов было доступно, необходимо в конфигурационном файле (php.ini) установить allow_url_fopen=1.
Обратите внимание: Версии PHP для Windows до PHP 4.3.0 не поддерживают возможность использования удаленных файлов этой функцией даже в том случае, если опция allow_url_fopen включена.
<?php
/* Здесь предполагается, что www.example.com сконфигурирован для разбора .php
* файлов, а не .txt файлов. Также 'Works' здесь означает, что переменные
* $foo и $bar доступны в подключённом файле. */
// Не будет работать, так как file.txt не обрабатывается www.example.com как PHP
require 'http://www.example.com/file.txt?foo=1&bar=2';
// Не будет работать, поскольку ищет файл 'file.php?foo=1&bar=2' в локальной
// файловой системе.
require 'file.php?foo=1&bar=2';
// Следующий пример работает:
require 'http://www.example.com/file.php?foo=1&bar=2';
$foo = 1;
$bar = 2;
require 'file.txt'; // Работает
require 'file.php'; // Работает
?>
Смотрите также удаленные файлы , описание функций fopen() и file() для получения дополнительной информации.