Язык программирования PHP

         

Include


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

include 'имя_файла'; include $file_name; include ("имя_файла");

Пример 3.9. Пусть в файле params.inc у нас хранится набор каких-то параметров и функций. Каждый раз, когда нам нужно будет использовать эти параметры (функции), мы будем вставлять в текст нашей основной программы команду include 'params.inc'.

params.inc <?php $user = "Вася"; $today = date("d.m.y"); /* функция date() возвращает дату и время (здесь – дату в формате день.месяц.год) */ ?>

include.php <?php include ("params.inc"); /* переменные $user и $today заданы в файле params.inc. Здесь мы тоже можем ими пользоваться благодаря команде include("params.inc") */

echo "Привет, $user!<br>"; // выведет "Привет, Вася!" echo "Сегодня $today"; // выведет, например, "Сегодня 7.07.05" ?>

Пример 3.9. Использование оператора включения include (html, txt)

Заметим, что использование оператора include эквивалентно простой вставке содержательной части файла params.inc в код программы include.php. Может быть, тогда можно было в params.inc записать простой текст без всяких тегов, указывающих на то, что это php-код? Нельзя! Дело в том, что в момент вставки файла происходит переключение из режима обработки PHP в режим HTML. Поэтому код внутри включаемого файла, который нужно обработать как PHP-скрипт, должен быть заключен в соответствующие теги.

Поиск файла для вставки происходит по следующим правилам.

  1. Сначала ведется поиск файла в include_path относительно текущей рабочей директории.
  2. Если файл не найден, то поиск производится в include_path относительно директории текущего скрипта.
  3. Параметр include_path, определяемый в файле настроек PHP, задает имена директорий, в которых нужно искать включаемые файлы.

Например, ваш include_path это . (то есть текущая директория), текущая рабочая директория это /www/. В основной файл include.php вы включаете файл my_dir/a.php, который в свою очередь включает b.php. Тогда парсер первым делом ищет файл b.php в директории /www/, и если такового нет, то в директории /www/my_dir/.

Если файл включен с помощью include, то содержащийся в нем код наследует область видимости переменных строки, где появился include. Любые переменные вызванного файла будут доступны в вызывающем файле с этой строки и далее. Соответственно, если include появляется внутри функции вызывающего файла, то код, содержащийся в вызываемом файле, будет вести себя так, как будто он был определен внутри функции. Таким образом, он унаследует область видимости этой функции. Хотя мы и не знакомились еще с понятием функции, все же приводим здесь эти сведения в расчете на интуитивное его понимание.

Пример 3.10. Пусть файл для вставки params.inc останется таким же, а include.php будет следующим:


<?php function Footer(){ // объявляем функцию с именем Footer include ("params.inc"); /* включаем файл params.inc. Теперь его переменными можно пользоваться, но только внутри функции */ $str = "Сегодня: $today <br>"; $str .= "<a href='mailto:help@intuit.ru'>Страницу создал $user</a>"; echo "$str"; } Footer(); // вызываем функцию Footer(). Получим: //Сегодня: 08.07.05 //Страницу создал Вася

echo "$user, $today"; // выведет запятую, так как // эти переменные видны только // внутри функции ?>

Пример 3.10. Область видимости при использовани include (html, txt)

Кроме локальных файлов, с помощью include можно включать и внешние файлы, указывая их url-адреса. Данная возможность контролируется директивой url_fopen_wrappers в файле настроек PHP и по умолчанию, как правило, включена. Но в версиях PHP для Windows до PHP 4.3.0 эта возможность не поддерживается совсем, вне зависимости от url_fopen_wrappers.

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

<?php /* Это неверная запись. Получим ошибку. Мы же вставляем не одну команду, а несколько, они только записаны в другом файле */ if ($condition) include("first.php"); else include("second.php"); // А вот так правильно. if ($condition){ include("first.php"); } else { include("second.php"); } ?>

Пример 3.11. Использование include() (html, txt)

При использовании include возможны два вида ошибок – ошибка вставки (например, нельзя найти указанный файл, неверно написана сама команда вставки и т.п.) или ошибка исполнения (если ошибка содержится во вставляемом файле). В любом случае при ошибке в команде include исполнение скрипта не завершается.


Содержание раздела