ГЛАВА 9. РНР и динамическое создание страниц
Функции
В РНР существуют четыре функции для включения файлов в сценарии РНР:
- include();
- include_once();
- require();
- require_once().
Несмотря на сходство имен, эти функции решают разные задачи.
include()
Функция include() включает содержимое файла в сценарий. Синтаксис функции include():
include(file файл)
У функции include() есть одна интересная особенность — ее можно выполнять условно. Например, если вызов функции включен в блок команды if. то файл включается в программу лишь в том случае, если условие if истинно. Если функция include() используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители. Сравните различия в синтаксисе листингов 9.1 и 9.2.
Листинг 9.1. Неправильное использование include()
if(some_conditional)
include('text91a.txt');
else
include('text91b.txt');
Листинг 9.2. Правильное использование include()
if(some_conditional) :
include('text91a.txt');
else :
include('text91b.txt');
endif;
Весь код РНР во включаемом файле обязательно заключается в теги РНР. Не стоит полагать, что простое сохранение команды РНР в файле обеспечит ее правильную обработку:
print "this is an invalid include file";
Вместо этого необходимо заключить команду в соответствующие теги, как показывает следующий пример:
<?
print "this is an invalid include file";
?>
include_once()
Функция include_once() делает то же, что и include(), за одним исключением: прежде чем включать файл в программу, она проверяет, не был ли он включен ранее. Если файл уже был включен, вызов include_once() игнорируется, а если нет — происходит стандартное включение файла. Во всем остальном include_once() ничем не отличается от include(). Синтаксис функции include_once():
include_once(file файл)
require()
В целом функция require() похожа на include() — она тоже включает шаблон в тот файл, в котором находится вызов require(). Синтаксис функции require():
require(file файл)
Тем не менее, между функциями require() и include() существует одно важное различие. Файл, определяемый параметром require(), включается в сценарий независимо от местонахождения require() в сценарии. Например, при вызове requirе() в блоке if при ложном условии файл все равно будет включен в сценарий!
Во многих ситуациях бывает удобно создать файл с переменными и другой информацией, которая используется в масштабах сайта, и затем подключать его по мере необходимости. Хотя имя этого файла выбирается произвольно, я обычно называю его init.tpl(сокращение от «initializaion.template»). В листинге 9.3 показано, как выглядит очень простой файл init.tpl. В листинге 9.4 содержимое init.tpl включается в сценарий командой require().
Листинг 9.3. Пример инициализационного файла
<?
$site_title = "РНР Recipes";
$contact_email = "wjgilmore@hotmail.com";
$contact_name = "WJ Gilmore";
?>
Листинг 9.4. Использование файла init.tpl
<? require('init.tpl'); ?>
<html>
<head>
<title><? print $site_title; ?></title>
</head>
<body>
<? print "Welcome to $site_title. For questions, contact <a href =
\"mailto:$contact_email\">$contact_name</a>."; ?>
</body>
</html>
Передача URL при вызове require() допускается лишь при включенном режиме «URL fopen wrappers»(этот режим включен по умолчанию).
С увеличением размеров сайта может оказаться, что некоторые файлы включаются в сценарий по несколько раз. Иногда это не вызывает проблем, но в некоторых случаях повторное включение файла приводит к сбросу значений изменившихся переменных. Если во включаемом файле определяются функции, могут возникнуть конфликты имен. Учитывая сказанное, мы приходим к следующей функции — require_once().
require_once()
Функция require_once() гарантирует, что файл будет включаться в сценарий всего один раз. После вызова requi rе_оnсе() все дальнейшие попытки включения того же файла игнорируются. Синтаксис функции requiге_оnсе():
require_once(file файл)
Если не считать дополнительной проверки, в остальном эта функция аналогична require().
Вероятно, вы станете чаще использовать функции включения файлов по мере того, как ваши web-приложения начнут увеличиваться в размерах. Эти функции часто встречаются в примерах данной книги, чтобы сократить избыточность программного кода. Первые примеры рассматриваются в следующем разделе, посвященном принципам построения базовых шаблонов.
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|