Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
52
Добавлен:
17.02.2016
Размер:
34.3 Кб
Скачать

Самостоятельная работа №4 "Создание одного скрипта из нескольких скриптов"

Цель: закрепить навыки работы в php.

Вид отчетности: решение в тетради или на листе формата А4.

Время выполнения: 6 часов

Теоретические сведения

Инструкции require

Данные инструкции позволяют собрать большую программу на несколько отдельных файлов. Инструкция require позволяет включить код до выполнения нашего сценария.

Общий синтаксис инструкции такой: require имя_файла;

Теперь разберемся подробнее, что же делает require. Интерпретатор анализирует сценарий и, найдя require, просто заменяет ее содержимым указанного файла. Это может быть HTML-файл или сценарий на PHP. В последнем случае содержимое файла должно быть обрамлено тегами — как в случае с обыкновенным сценарием. Вставка содержимого файла, происходит ДО выполнения сценария — прочитав следующий пункт, вы заметите разницу.

Очень удобно использовать эту инструкцию для включения HTML-заголовков. Например:

Файл header.html:

<htmlxhead>

<title>My Company's Official Web Page</title>

</head>

<body>

Сценарий:

require header.html

/* тело документа */

 Инструкции include 

В отличие от require директива include позволяет включить код в сценарий во время выполнения сценария. Использование этой директивы выглядит следующим образом:

include имя_файла;

Возможно, вам нужно динамически менять заголовок в зависимости от ситуации:

for ($1 = 0; $i<4; $i + + ) {

inlcude "header{$i}.html"

}i

Создайте четыре файла. header0. ntml. headerl.html, header3.html и header3.html. Пусть каждый из них содержит соответствующую имени файла цифру — от 0 до 3. При выполнении сценария вы увидите вывод 0123. Данный вывод означает, что содержимое файлов вставляется в сценарий во время его выполнения. Замените include на require, я вы почувствуете разницу.

Обратите внимание на фигурные скобки. При таком контексте использования include они обязательны. Почему? Интерпретатор просто заменяет include содержимым файла. Представьте, что наш файл содержит не один, а несколько операторов. Получится следующее:

for ($1=0; $1<4; $1++)

operatorl;

operator2;

operators;

Как вы видите, мы получаем совсем не то, на что рассчитывали. Мы хотели, чтобы все три оператора выполнились четыре раза, а на самом деле, четыре раза выполняется только первый оператор, а остальные два будут выполнены после окончания работы цикла. Отсюда следует небольшой вывод: если вы забудете заключить include в фигурные скобки (в цикле), то ваша программа будет работать некорректно или вообще возникнет ошибка. Всегда заключайте инструкцию include в фигурные скобки!

 Особенности использования include и require

Что же происходит на самом деле при использовании include? Мы знаем, что PHP преобразует наш сценарий в собственное внутреннее представление. Первую строку, вторую, третью... И так, пока он не дойдет до инструкции include. Затем PHP прекращает транслировать наш сценарий и переключается на указанный в include файл. Вполне объяснимо: интерпретатор не знает, что будет в этом файле, поэтому не может отложить его трансляцию «до лучших времен». Если у вас большая программа, и она подключает дополнительные файлы с помощью include, вряд ли она будет работать быстро, поскольку из-за особенностей include быстродействие резко снижается.

С require таких проблем нет: файл включается до выполнения сценария, то есть на момент трансляции он уже включен в наш сценарий и PHP нет необходимости ждать, пока оттранслируется указанный файл. Что же использовать? Если вам нужно подключить какой-то дополнительный модуль (например, класс HtmlMimeMail, который будет рассматриваться в этой книге), используйте require. Если вы точно знаете, что вам нужно включить какой-то файл не один раз, используйте include, однако старайтесь по возможности использовать require везде, где только можно.

Задание к работе:

Изучить инструкцию создания одного скрипта из нескольких и отработать ее на примере.

Соседние файлы в папке Методички ИСИС 230401