Поиск

Использование функций include и require

До этого момента мы писали сценарии для работы с базами данных, обработ ки HTMLформ, сохранения cookie и многого другого, но все наши программы состояли только из одного файла. Однако, как только мы начинаем разрабаты вать сложные сайты, практика переписывания одних и тех же функций в каж дом сценарии становится неэффективной. Поразмыслив, вы наверняка обна ружите, что HTMLдизайн и PHPфункции используются на многих страницах Webресурсов. Можно размножать эту общую информацию в каждом отдельном сценарии, но, если вдруг возникнет необходимость внести какиелибо измене ния, делать это придется во многих местах. Массу времени удастся сэкономить, создав отдельные файлы для общего кода и включив их в PHPсценарии с по мощью одной из двух инструкций: include () и require ( ) . Синтаксис при этом будет выглядеть следующим образом:

include("file.php");
require ("£Це.рпр") ;

Обе команды работают почти одинаково, за исключением одного суще ственного различия. Независимо от того, в каком месте сценария имеется ин струкция require ( ) , ею всегда будет вставлен требуемый файл, даже если блок кода, где она задана, в данный момент не работает. Функция include ( ) , наоборот, включит код из файла, только если она действительно вызвана. Поэтому необ ходимо использовать команду require ( ) , когда файл должен быть включен, и include ( ) , если файл в зависимости от обстоятельств может быть включен или нет.

Что делают эти команды? Каждая из них включает указанный файл в основ ной (чтобы было более понятно, будем называть файл, который содержит строку include ( ) или require ( ) , родительским файлом). Любой код внутри фай ла будет трактоваться как обычный код HTML, если он не находится внутри PHPскобок в самом включенном файле. Любые переменные, имеющиеся в ро дительском документе до вызова команд include () или require ( ) , доступны включенному файлу, и любые переменные из включенного файла будут доступ ны родительскому документу после вызова этих функций.

Включаемые файлы стоит использовать по нескольким причинам. Можно поместить свои собственные функции в общий файл. Удобно также хранить информацию доступа к базе данных в едином конфигурационном файле. Для начала поместим наш HTMLдизайн во включаемые файлы, чтобы он мог быть использован в нескольких страницах.
Выполнение действия

  1. Создайте новый PHPдокумент в текстовом редакторе.
  2. <HTML>
    <HEAD>
    <TITLE>

    Хотя перед нами файл с расширением .php, в нем только один РНРраздел, поэтому напишем большую часть кода как стандартный HTMLсценарий во избежание использования многочисленных инструкций print ( ) .

  3. Используйте для печати заголовка страницы код, представленный ниже.
  4. <?php
    print ("$PageTitle");
    ?>

    Значение переменной $PageTitle будет присвоено в родительском докумен те и затем использовано здесь для заголовка страницы, который выводится на экран в самом верху окна браузера (рис. 13.1).

  5. Закончите HTMLзаголовок.
  6. </TITLE>
    </HEAD>
    <BODY>
  7. Создайте таблицу, которая будет управлять разбивкой страницы.
  8. <TABLE WIDTH="75%" ALIGN=CENTER BORDER=0>
    <TRxTD ALIGN=CENTERxB>Welcome to the Site!</Bx/TDxTR>
    <TRxTD ALIGN=LEFTxP>

    Сайт выглядит как таблица из трех строк. Верхняя строка будет включать приветствие, хотя можно использовать и графику. Во второй строке поместим собственно содержание страницы, а на третьей показан нижний колонтитул. Мы используем первый включаемый файл для заголовка страницы, а также для верхней и начала второй строки таблицы.

  9. Сохраните сценарий как header.php (листинг 13.1) и загрузите его на Web сервер.
  10. Листинг 13.1 т Это первый включаемый файл, который содержит HTML заголовок, а также начало таблицы. Поскольку каждая страница имеет свой за головок, используется переменная, печатающая соответствующие значения.

    1 <HTML>
    2 <HEAD>
    3 <TITLE>
    4 < ?php
    5 print ("$PageTitle");
    6 ?>
    7 </TITLE>
    8 </HEAD>
    9 <BODY>
    10 <TABLE WIDTH="75411 ALIGN»CENTER BORDER=0>
    11 <TRxTD ALIGN=CENTERxB>Welcome to the SiteK/Bx/TDxTR>
    12 <TRxTD ALIGN=LEFTxP>

    Напишем второй включаемый файл для нижнего колонтитула.

  11. Создайте новый PHPдокумент в текстовом редакторе.
  12. Закройте вторую строку таблицы разбивки страницы.
  13. <Px/TDx/TR>
  14. Напишите код для последней, третьей строки таблицы, которая будет со держать информацию об авторском праве.
  15. <TRxTD ALIGN=CENTERxSMALL>Copyright 2001</SMALLx/TDx/TR>
  16. Закройте таблицу и HTMLстраницу.
  17. </TABLE>
    </BODY>
    </HTML>
  18. Сохраните сценарий как footer.php (листинг 13.2) и загрузите его на сер вер. Как только два включаемых файла готовы, можно приступать к созда нию родительских страниц.
  19. Листинг 13.2 т Это второй включаемый файл, который завершит создание таблицы и закончит HTMLстраницу. Здесь также представлена информация об авторском праве.

    1 <Px/TDx/TR>
    2 <TRxTD ALIGNCENTERxSMALL>Copyriaht 2001</SMALLx/TDx/TR>
    3 </TABLE>
    4 </BODY>
    5 </HTML>
  20. Создайте новый PHPдокумент в текстовом редакторе.
  21. <?php
  22. Присвойте имя страницы переменной $PageTitle.
  23. $PageTitle = "Home Page";

    Значение переменной $PageTitle используется для создания заголовка страницы, который будет размещен в верхней части окна браузера. Так как за головки страниц различаются между собой, оформим их как переменную, ис пользуемую включаемым файлом.

  24. Включите файл заголовка.
  25. require ("header.php");

    В этом случае не имеет значения, какая из двух функций применяется, но мы использовали require ( ) для того, чтобы гарантировать включение. Данная строка поместит весь код файла header.php в эту страницу. Строка должна сто ять в сценарии после того, как переменной $PageTitle присвоено значение, иначе страница не будет иметь заголовка.

  26. Создайте содержимое страницы.
  27. print ("Content for the home page goes here.\n");
    ,. print ("<P>Click <A HREF=\"page2.php\">
    here</A> to goto the next page.Xn");

    Сюда включено только простое сообщение и ссылка на вторую страницу. Вы можете поместить любое содержание, включая то, которое динамически гене рируется РНР.

  28. Включите файл нижнего колонтитула и закройте страницу.
  29. require ("footer.php");
  30. Сохраните страницу как index.php (листинг 13.3) и загрузите ее на сервер.
  31. Листинг 13.3 т Как только вы создали два включаемых файла, команда require ( ) помещает их в родительский файл для создания всей страницы «на лету».

    1 < ?php
    2 $PageTitle = "Home Page";
    3 require ("header.php");
    4 print ("Content for the home page goes here.\n");
    5 print ("<P>Click <A HREF=\"page2 .php\">here</A>
    to go to the next page.\n");
    6 require ("footer.php");
    7 ?>

    А теперь напишем вторую страницу, где будут использоваться включаемые файлы, содержащие тот же дизайн сайта.

  32. Создайте новый PHPдокумент в текстовом редакторе.
  33. <?php
    $PageTitle = "Second Page";
    require ("header.php");
    print ("Content for the second page goes here.\n");
    require ("footer.php");

    Чтобы отличать эту страницу от файла index.php, мы присвоили перемен ной $PageTitle новое значение, а затем изменили инструкцию print ( ) .

  34. Сохраните сценарий как page2.php (листинг 13.4), загрузите его на сервер и протестируйте вместе с файлом index.php в браузере (рис. 13.113.3). Листинг 13.4 т Это еще один родительский файл, во многом идентичный сценарию, данному в листинге 13.3. Независимо от количества страниц на ва шем сайте всеми ими может быть использован этот базовый шаблон.
1 <?php
2 $PageTitle = "Second Page";
3 require ("header.php");
4 print ("Content for the second page goes here.\n");
5 require ("footer.php");
6 ?>
Желательно использовать расширение .php, а не ,inc, которое некоторые програм мисты применяют для включаемых файлов. Хотя для родительского файла РНР это не имеет значения, ловкий пользователь иногда может посмотреть исходный текст файла .inc, а вкладываемого файла .php нет (рис. 13.4 и 13.5).