Язык программирования PHP | страница 29
Если файл включен с помощью include, то содержащийся в нем код наследует область видимости переменных строки, где появился include. Любые переменные вызванного файла будут доступны в вызывающем файле с этой строки и далее. Соответственно, если include появляется внутри функции вызывающего файла, то код, содержащийся в вызываемом файле, будет вести себя так, как будто он был определен внутри функции. Таким образом, он унаследует область видимости этой функции. Хотя мы и не знакомились еще с понятием функции, все же приводим здесь эти сведения в расчете на интуитивное его понимание.
Пример 3.10. Пусть файл для вставки params.inc останется таким же, а include.php будет следующим:
>
>function Footer(){
> // объявляем функцию с именем Footer
> include ("params.inc");
>/* включаем файл params.inc.
> Теперь его переменными можно пользоваться,
> но только внутри функции */
> $str = "Сегодня: $today
";
> href='mailto:help@intuit.ru'>Страницу
> создал $user";
> echo "$str";
>}
>Footer();
> // вызываем функцию Footer(). Получим:
>//Сегодня: 08.07.05
>//Страницу создал Вася
>echo "$user, $today";
> // выведет запятую, так как
> // эти переменные видны только
> // внутри функции
>?>
Кроме локальных файлов, с помощью include можно включать и внешние файлы, указывая их url-адреса. Данная возможность контролируется директивой url_fopen_wrappers в файле настроек PHP и по умолчанию, как правило, включена. Но в версиях PHP для Windows до PHP 4.3.0 эта возможность не поддерживается совсем, вне зависимости от url_fopen_wrappers.
include() – это специальная языковая конструкция, поэтому при использовании внутри условных блоков ее нужно заключать в фигурные скобки.
>
>/* Это неверная запись. Получим ошибку.
> Мы же вставляем не одну команду,
> а несколько, они только записаны
> в другом файле */
>if ($condition) include("first.php");
>else include("second.php");
>// А вот так правильно.
>if ($condition){ include("first.php"); }
>else { include("second.php"); }
>?>
При использовании include возможны два вида ошибок – ошибка вставки (например, нельзя найти указанный файл, неверно написана сама команда вставки и т.п.) или ошибка исполнения (если ошибка содержится во вставляемом файле). В любом случае при ошибке в команде include исполнение скрипта не завершается.
require
Этот оператор действует примерно так же, как и #include в C++. Все, что мы говорили о include, лишь за некоторыми исключениями, справедливо и для require. Require также позволяет включать в программу и исполнять какой-либо файл. Основное отличие require и include заключается в том, как они реагируют на возникновение ошибки. Как уже говорилось, include выдает предупреждение, и работа скрипта продолжается. Ошибка в require вызывает фатальную ошибку работы скрипта и прекращает его выполнение.