|
include()(PHP 4, PHP5) Выражение include() включает и выполняет указанный файл. Документация ниже также относится к выражению require(). Файлы включаются исходя из пути указанного файла, или, если путь не указан, используется путь, указанный в директиве include_path. Если файл не найден в include_path, include() попытается проверить директорию, в которой находится текущий включающий скрипт и текущую рабочую директорию перед тем, как выдать ошибку. Конструкция include() выдаст warning, если не сможет найти файл; поведение отлично от require(), который выдаст фатальную ошибку. Если путь указан — не важно, абсолютный (начинающийся с буквы диска или с \ в Windows или с / в Unix/Linux системах) или относительно текущей директории (начинающийся с . или ..) — директива include_path будет проигнорирована в любом случае. К примеру, если начинается с ../, парсер проверит родительскую директорию на наличие запрошенного файла. Для большей информации о том, как PHP обрабатывает включаемые файлы и включаемые пути, смотрите документацию для директивы include_path. Когда файл включается, его код наследует ту же область видимости переменых, что и строка, на которой произошло включение. Все переменные, доступные на этой строке во включащем файле будут также доступны во включаемом файле. Однако все функции и классы, объявленные во включаемом файле, будут доступны в глобальной области видимости.
Пример #1 Простой пример include()
vars.php Если включение происходит внутри функции включающего файла, тогда весь код, содержащийся во включаемом файле, будет вести себя так, как будто он был определен внутри этой функции. То есть, он будет в той же области видимости переменных этой функции. Исключением к этому правилу являются магические константы, которые выполняются парсером перед тем, как происходит включение.
Пример #2 Включение внутри функции
<?php Когда файл включается, парсинг в режиме PHP кода прекращается и переключается в режим HTML в начале указанного файла и продолжается снова в конце. По этой причине любой код внутри включаемого файла, который должен быть выполнен как PHP код, должен быть заключен в верные теги начала и конца PHP кода. Если "обертки URL fopen " включены в PHP (по умолчанию они включены), вы можете также указать файл для включения через URL (с помощью HTTP или других поддерживающихся обработчиков - смотри Поддерживаемые протоколы и обработчики (wrappers) для списка протоколов) вместо локального пути. Если целевой сервер интерпретирует указанный файл как PHP код, могут быть переданы переменные во включаемый файл с помощью строки URL-запроса, как если бы использовался метод HTTP GET. Это, строго говоря, не тоже самое, что включение файла и наследование родительской области видимости; скрипт выполняется на удаленном сервере и результат выполнения включается в локальный скрипт. Внимание
Версии PHP для Windows до PHP 4.3.0 не поддерживают возможность использования удаленных файлов этой функцией даже в том случае, если включена опция allow_url_fopen.
Пример #3 Пример include() через HTTP
<?php Внимание
Предупреждение безопасностиУдаленные файлы могут быть обработаны на удаленной стороне (в зависимости от расширения файла и того, что удаленный сервер выполняет скрипты PHP или нет), но это все равно должно производить валидный PHP скрипт, потому что он будет затем обработан уже на локальном сервере. Если файл с удаленного сервера должен быть обработан там и выведен его результат, предпочтительнее воспользоваться функцией readfile() В противном случае, должны быть предусмотрены дополнительные меры, чтобы обезопасить удаленный скрипт от ошибок и нежелательного кода. Смотрите также раздел Удаленные файлы, функции fopen() и file() для дополнительной информации. Обработка возвращаемых значений: возможно выполнить выражение return() внутри включаемого файла, чтобы завершить процесс выполнения в этом файле и вернуться к выполнению включающего файла. Также, возможно вернуть значение из включаемых файлов. Вы можете получить значение включения как если бы вы вызвали обычную функцию. Хотя это не возможно при включении удаленного файла, только если вывод удаленного файла не содержит правильные теги начала и конца PHP кода (так же, как и локальный файл). Вы можете определить необходимые переменные внутри этих тегов и они будут представлены в том месте, где файл был включен. Так как include() - это специальная языковая конструкция, круглые скобки не обязательны для заключения аргумента. Будьте осторожны при сравнении возвращаемого значения. Пример #4 Сравнение возвращаемого значения при include
<?php
Пример #5 Выражения include() и return()
return.php $bar имеет значение 1, т.к. включение файла произошло успешно. Заметьте разницу между примерами сверху. Первый использует return() внутри включаемого файла, тогда как второй не использует. Если файл не может быть включен, возвращается FALSE и возникает E_WARNING. Если во включаемом файле определены функции, они могут быыть использованы в главном файле вне зависимости от того, были ли они объявлены до return() или после. Если файл включается дважды, PHP 5 выдаст фатальную ошибку, потому что функции уже были определены, в то время как PHP 4 не обратил бы внимания на функции, определенные после return(). Рекомендуется использовать include_once() вместо того, чтобы проверять был ли уже файл включен ранее. Другой путь "включить" PHP файл в переменную - это захватить вывод используя Функции контроля вывода с include(). К примеру:
Пример #6 Использование буферизинованного вывода для включения PHP файла в строку
<?php Для того, чтобы включать файлы автоматически в скрипты, обратите внимание на конфигурационные директивы auto_prepend_file и auto_append_file в php.ini.
Смотрите также require(), require_once(), include_once(), get_included_files(), readfile(), virtual() и include_path. |
|