PHP 4 на практике

       

Функции


В РНР существуют четыре функции для включения файлов в сценарии РНР:

  • include( );
  • include_once( );
  • require( );
  • require_once( ).
  • Несмотря на сходство имен, эти функции решают разные задачи.

    include( )

    Функция include( ) включает содержимое файла в сценарий. Синтаксис функции include( ):

    include (file файл]

    У функции include( ) есть одна интересная особенность — ее можно выполнять условно. Например, если вызов функции включен в блок команды if. то файл включается в программу лишь в том случае, если условие i f истинно. Если функция includeO используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители. Сравните различия в синтаксисе листингов 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( ) в сценарии. Например, при вызове requi ге( ) в блоке 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 =

    \"mai1 to:$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-приложения начнут увеличиваться в размерах. Эти функции часто встречаются в примерах данной книги, чтобы сократить избыточность программного кода. Первые примеры рассматриваются в следующем разделе, посвященном принципам построения базовых шаблонов.


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