Язык программирования PHP | страница 29




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


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


>

>function Footer(){

> // объявляем функцию с именем Footer

> include ("params.inc");

>/* включаем файл params.inc.

> Теперь его переменными можно пользоваться,

> но только внутри функции */

> $str = "Сегодня: $today
";

> $str .= "

> 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 вызывает фатальную ошибку работы скрипта и прекращает его выполнение.