5 семестр / Инструм.средства / Методички ИСИС 230401 / СРС №4
.docСамостоятельная работа №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 везде, где только можно.
Задание к работе:
Изучить инструкцию создания одного скрипта из нескольких и отработать ее на примере.