На главную страницу
Включение модулей в РНРФункция include()Функция include() (ее аналог: inсlude_once()) служит для того, чтобы прикреплять к PHP-коду новые модули на PHP. Предположим, информация об авторских правах занесена одной строкой в файл copyright.inc (кстати, немногие знают, что расширение .inc произошло от самого названия функции include(): Далее вообразим, что Вы это знали давно, и при создании сайта (который сейчас на несколько сотен страниц), предусмотрительно внесли на место, где должна быть информация об авторских правах такую строчку: include ("copyright.inc"); Теперь вы легко можете изменить один файл copyright.inc, чтобы отобразить изменения на всех страницах вашего сайта. Содержание файла copyright.inc до исправления: BillGates, (C)1995-2005 Содержание файла copyright.inc до после исправления: BillGates Ltd., © 1995-2009 Более подробно о функциях включения модулей• include() и require() - подключают и вычисляет специфицированный файл. Эти две конструкции идентичны во всём, за исключением того, как они обрабатывают неудачное выполнение. include() выдаёт Warning!, а require() выдаёт Fatal Error. Иначе говоря, не бойтесь использовать require(), если вам нужно, чтобы отсутствующий файл останавливал обработку страницы. include() не работает таким образом: скрипт всё равно продолжит работу. Когда файл подключён, содержащийся в нём код наследует область видимости переменной строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки. Базовый пример include(): vars.php <?php $color = 'green'; $fruit = 'apple'; test.php echo "A $color $fruit"; // A include 'vars.php'; echo "A $color $fruit"; // A green apple ?> Базовые примеры require(): <?php require 'prepend.php'; require $somefile; require ('somefile.txt'); ?> Если подключение возникает внутри функции в вызываемом файле, то весь код, содержащийся во включаемом файле, будет работать так, как если бы он был определён внутри. Так что он будет следовать области видимости переменной. Подключение внутри функций: <?php function foo() { global $color; include 'vars.php'; echo "A $color $fruit"; } /* vars.php находится в области видимости foo(), поэтому * * $fruit НЕ доступна вне это области видимости * * $color доступна, поскольку мы объявили её как глобальную. */ foo(); // A green apple echo "A $color $fruit"; // A green ?> Когда файл подключается, разбор переходит из режима PHP в режим HTML в начале целевого файла и вновь продолжает после конца. Исходя из этого, любой код внутри файла назначения, который должен выполняться как PHP-код, обязан быть заключён в правильные стартовый и конечный тэги РНР. Пример include() через HTTP <?php /* Здесь предполагается, что www.example.com сконфигурирован для разбора .php * * файлов, а не .txt файлов. Также 'Works' здесь означает, что переменные * * $foo и $bar доступны в подключённом файле. */ // Не будет работать; file.txt не был обработан www.example.com как PHP include 'http://www.example.com/file.txt?foo=1&bar=2'; // Не будет работать; ищет файл 'file.php?foo=1&bar=2' в локальной // файловой системе. include 'file.php?foo=1&bar=2'; // Работает. include 'http://www.example.com/file.php?foo=1&bar=2'; $foo = 1; $bar = 2; include 'file.txt'; // Работает. include 'file.php'; // Работает. ?> Поскольку include() и require() являются специальными конструкциями языка, вы обязаны заключить их в блок операторов, если это внутри условного блока. Пример include() и условные блоки: <?php // Это НЕПРАВИЛЬНО, и не будет работать так, как ожидается. if ($condition) include $file; else include $other; // Это КОРРЕКТНО. if ($condition) { include $file; } else { include $other; } ?> Обработка возвращает: можно выполнить оператор return() внутри подключённого файла, чтобы прервать обработку этого файла и возвратиться в скрипт, вызвавший его. Также можно возвращать значения из подключённых файлов. Вы можете принять значение вызова include как обычно. Примеры include() и return(): return.php <?php $var = 'PHP'; return $var; ?> noreturn.php <?php $var = 'PHP'; ?> testreturns.php <?php $foo = include 'return.php'; echo $foo; // печатает 'PHP' $bar = include 'noreturn.php'; echo $bar; // печатает 1 ?> $bar имеет значение 1, поскольку подключение было успешным. Обратите внимание на отличия в примерах. Первый использует return() внутри подключённого файла, а другие - нет. • include_once() и require_once() - включают и вычисляют специфицированный файл в процессе выполнения скрипта. Это поведение напоминает операторы include() и require() с той только разницей, что, если код из файла уже был подключён, он не будет подключён ещё раз. include_once() и require_once() должны использоваться в тех случаях, когда один и тот же файл может быть подключён и вычислен более одного раза в процессе определённого выполнения скрипта, а вы хотите иметь уверенность, что он включён точно один раз, чтобы избежать проблем с повторным определением функций, переназначениями переменных. Примеры include_once() и require_once(): <?php include_once("a.php"); // включит файл a.php include_once("A.php"); // включит файл a.php даже в системе Windows! require_once("a.php"); // включит файл a.php require_once("A.php"); // включит файл a.php даже в системе Windows! ?> • get_included_files - возвращает массив имён всех файлов, которые включены с использованием include(), include_once(), require() или require_once(). • get_required_files - эта функция является псевдонимом для get_included_files(). Файлы, включённые или затребованные несколько раз, показаны в возвращаемом массиве только один раз. Примечание: файлы, включённые с использованием директивы конфигурации auto_prepend_file, не входят в возвращаемый массив. Пример get_included_files(): <?php include("test1.php"); include_once("test2.php"); require("test3.php"); require_once("test4.php"); $included_files = get_included_files(); foreach($included_files as $filename) { echo "$filename\n"; } ?> сгенерирует на выводе: test1.php test2.php test3.php test4.php • include_path string - Специфицирует список директорий, где функции require(), include() и fopen_with_path() ищут файлы. Формат напоминает системную переменную окружения PATH: список директорий, разделённых двоеточием в UNIX или точкой запятой - в Windows. Пример UNIX include_path: include_path=.:/home/httpd/php-lib Пример Windows include_path: include_path=".;c:\www\phplib" Значение: по умолчанию: . (только текущая директория). Безопасное программирование
|