16300

Многократное использование кода в PHP

Лабораторная работа

Информатика, кибернетика и программирование

ЛАБОРАТОРНАЯ РАБОТА №5 Многократное использование кода 1. Использование оператора requireОператор require позволяет нам разбить текст программы на несколько файлов. Его формат такой:require имя_файла;При запуске именно при запуске а не при исполнении программы ин

Русский

2013-06-20

85.48 KB

7 чел.

ЛАБОРАТОРНАЯ РАБОТА №5

Многократное использование кода


1. Использование оператора require()


Оператор require() позволяет нам разбить текст программы на несколько файлов.

Его формат такой:


require (имя_файла);


При запуске (именно при запуске, а не при исполнении!) программы интерпретатор

просто заменит инструкцию на содержимое файла имя_файла (этот файл может также

содержать сценарий на PHP, обрамленный, как обычно, тэгами ). Причем сделает он

это только один раз (в отличие от include): а именно, непосредственно перед запуском

программы. 

Например, в файле с именем reusable.php хранится следующий код:



echo 'А это очень простой PHP-оператор.
';

?>


В файле с именем main.php хранится такой код:



echo "Это главный файл.
";

require( "reusable.php" );

echo "Сейчас сценарий должен завершиться.
";

?>


Когда Вы загружаете файл reusable.php, в окне браузера отображается текст:

«А это очень простой PHP-оператор.». При загрузке файла main.php происходит нечто

более интересное. Вывод этого сценария показан на рисунке:





При выполнении файла main.php оператор require() заменяется содержимым

запрошенного файла. То есть файл main.php выполняется так, как если бы он имел

следующий вид:



echo "Это главный файл.
";

echo 'А это очень простой PHP-оператор.
';

echo "Сейчас сценарий должен завершиться.
";

?>


РНР игнорирует расширение имени запрашиваемого оператором require() файла.

Это означает, что файл можно называть как угодно, если Вы только не собираетесь

вызывать его непосредственно.

Пример:

Сайт вымышленной компании содержит несколько страниц, и все они выглядят

как страница, изображенная на рис.





Сайт существует уже в течение некоторого времени и содержит сотни страниц,

которые все выдержаны в одном стиле. Принято решение частично изменить

стандартный вид: например, включить адрес электронной почты в нижний колонтитул

или добавить новую запись в меню навигации по страницам. Перспектива вносить

небольшое изменение в сотни страниц не очень радует.

Непосредственное многократное использование разделов HTML, общих для всех

страниц – это более рациональный подход. Исходный код начальной страницы

(home.html), показанной на рисунке выше, приведен в следующем листинге.







TLA Consulting




меню
 --> 















 Домой



Контакт



 Услуги

Карта

сайта

Добро пожаловать на сайт компании TLA Consulting. 

Пожалуйста, уделите некоторое время на знакомство с нами.

Мы специализируемся на обслуживании ваших деловых нужд
 

и надеемся скоро вас увидеть снова.


нижний колонтитул страницы --> 










© TLA Consulting Pty Ltd.

Пожалуйста, просмотрите нашу страницу с официальной информацией



Этот файл можно разделить на 3 части. Верхнюю и нижнюю части назовем
header.inc 

и footer.inc.

Содержимое
header.inc:




TLA Consulting




меню
 -->















 Домой



 Контакт



 Услуги



.

Карта

сайта




Содержимое footer.inc:





© TLA Consulting Pty Ltd.

Пожалуйста, просмотрите 

нашу страницу с официальной информацией



Файл
home.php будет служить заменой для home.html и будет содержать уникальное

содержимое страницы и 2 оператора require():

require('header.inc');

?>


Добро пожаловать на сайт компании
TLA Consulting. 

Пожалуйста, уделите некоторое время на знакомство с нами.

Мы специализируемся на обслуживании ваших деловых нужд
 

и надеемся скоро вас увидеть снова.



require('footer.inc');

?>


2. Использование оператора include()

При использовании оператора
include(), в отличие от require(), включаемый файл

вставляется "в сердце" нашего сценария не перед его выполнением, а прямо во время.

В отличие от файлов, загруженных при помощи
require(), файлы, загруженные при

помощи include(), могут возвращать значение.

Пример:

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

повторно вводить одни и те же строки кода, мы хотим, чтобы это делал за нас

включенный файл. Назовем его openfile.inc и придадим ему такой вид:

@ $
fp = fopen($name, $mode);

if (!$fp)

{

echo '

Невозможно открыть файл.

';

return 0;

}

else

{

return 1;

}

?>


Вызывать файл будем из следующего сценария:



$
name = 'file.txt';

$
mode = 'r';

$
result = include('openfile.inc');

if($result == 1)

{

echo "Все нормально";

}

?>
 


Обратите внимание, что переменные можно создавать в основном файле,

во включаемом или запрашиваемом файле, при этом переменная будет существовать

в обоих файлах. В этом отношении и require(), и include() ведут себя одинаково.


3. Передача параметров по ссылке через адресную строку

Достаточно часто встречаются сайты, ссылки которых включают в себя специальные

символы - &, ?, %. Все это может быть и результатом работы РНР. Дело в том, что

если в конце ссылки добавить ?имя=значение, это значение будет доступно под этим

же именем в файле, куда указывает ссылка. Если необходимо добавить несколько

имен, они могут быть разделены знаком &. Теперь мы можем сделать сайт, который

будет доступен с помощью только одной странички. А всю остальную информацию

эта страничка будет выводить на основании полученных по ссылке данных. Вид такой

ссылки будет примерно таким: http://имя.ru/index.phtml?link=1. Единица в конце

ссылки и есть наш параметр, который будет подставляться в файле index.phtml.

Например, вот так: 


…начало файла …
$url = "";
if ($link == 1) { $url = "name1.phtml"; }
if ($link == 2) { $url = "name2.phtml"; }
if ($link == 3) { $url = "name3.phtml"; }
if ($link == 4) { $url = "name4.phtml"; }
if ($url == "") { $url = "error.phtml"; }
INCLUDE ($url);
?>
… конец файла …


Обратите внимание, написанный нами код учитывает ситуацию, когда посетитель по

разным причинам указал неправильный параметр. В этом случае выводится заранее

заготовленная страничка с сообщением об ошибке. Если же параметр соответствует

какому-либо из файлов сайта, он в код файла index.phtml вкладывается и исполняется.

Таким образом, начало и конец остаются одинаковыми, а изменяется только середина.

И какие-либо изменения уже не кажутся такими страшными, как раньше. Ведь сделать

их надо только в одном файле, а отразится это на всем сайте.

Есть и другой путь. Его суть заключается в том, что у РНР есть доступ к так

называемым переменным окружения сервера. Одна из этих переменных –

запрашиваемый посетителем путь относительно адреса сайта. И этот путь

становится нам доступен для использования. В этом случае ссылки у нас будут такого

вида: http://имя.ru/index.phtml?patch/name.phtml. Вторая часть ссылки

- patch/name.phtml - будет нам доступна, если мы считаем параметр $QUERY_STRING. Например, так: $add = $QUERY_STRING. Теперь изменим наш головной файл index.phtml,

чтобы все работало автоматически. А если запрашиваемый параметр не будет

указан (правильно говоря - будет равен пустой строке), чтобы что-то открыть,

присвоим переменной $add имя файла, который должен быть открыт как главная

страничка. Пусть это будет файл main.phtml. Тогда код будет выглядеть следующим

образом:


начало файла
$add = $QUERY_STRING;
if ($add == "") { $add = "main.phtml"; }
INCLUDE ($add);
?>
… конец файла …



Как видите, еще проще. Но сразу хочу предостеречь Вас, что этот метод хоть и проще

первого, но открывает путь к получению информации о сервере, где расположен сайт

с такой организацией структуры. Злоумышленник или просто любопытный человек

при наличии определенных обстоятельств и знаний сможет много узнать о Вашем

сервере, а это открывает прямой путь к взлому. Так что будьте осторожны и не станьте

причиной больших неприятностей. Защититься от подобных проблем можно, но это

уже совсем другая история.

Задания.

Создать страницу с таблицей следующего вида:

Ссылка 1

Ссылка 2

Ссылка 3

Для 1-го варианта

Для 2-го варианта

Для 3-го варианта

Для 4-го варианта

Для 5-го варианта

С помощью операторов include() или (и) require()

осуществить переход по ссылкам в 1-вом столбце с заменой

содержимого ячейки, соответствующей Вашему варианту,

во втором столбце на сообщение вида: «Вы нажали на

ссылку i». Использовать передачу параметров,

определяющих номер ссылки, через адресную строку.

Добавить документ в свой  сайт


 

А также другие работы, которые могут Вас заинтересовать

69612. РАЗРАБОТКА UML ДИАГРАММ ЛОГИЧЕСКОГО УРОВНЯ ПРОЕКТИРОВАНИЯ КОМПОНЕНТНИХ ПРОГРАММНЫХ РЕШЕНИЙ (КПР): МОДЕЛИРОВАНИЯ ДИНАМИЧЕСКИХ АСПЕКТОВ 45.05 KB
  Диаграмма состояний Показывает как объект переходит из одного состояния в другое. Диаграмма активности Используются для визуализации алгоритмов программы. Диаграмма кооперации Показывает поток сообщений между объектами системы и основные ассоциации между ними...
69613. Разработка спецификации системных требований в процессе проектирования ПО 16.6 KB
  Разработка программного обеспечения для изучения динамического хаоса Прецедент: Решение задач для одномерных отображений Заинтересованные личности прецедента и их требования студент: изучить и получить первичные знания о динамическом хаосе преподаватель: обучить студентов с помощью программы.
69614. ДВИГАТЕЛЬ АСИНХРОННЫЙ С КОРОТКОЗАМКНУТЫМ РОТОРОМ 18.97 MB
  Цель работы: рассчитать размеры статора и ротора, выбрать тип обмотки, обмоточные провода, изоляцию, материалы активных и конструктивных частей машины. Сконструировать и рассчитать отдельные части машины, то есть связать электротехнические понятия с геометрическими размерами.
69615. Управление риском 246 KB
  Сжатие графиков проекта. В контексте проекта риск это вероятность наступления нежелательного события и всех его возможных последствий Некоторые нежелательные события можно выявить еще до начала проекта некоторые нельзя ни предвидеть ни даже вообразить.
69616. Измерение и оценка состояния работ 473.5 KB
  Контроль процесса. Этапы контроля. Разработка основного плана. Измерение хода работы. Сравнение плана с фактом. Принятие мер. Мониторинг времени выполнения работ. Интегрированная система стоимость/график. Сметная стоимость работ (bcws).
69617. Информационные технологии в управлении 679.5 KB
  В части календарно-ресурсного планирования СУП должна обеспечить следующие возможности: формирование структуры декомпозиции работ WBSструктуры требуемой степени детализации; формирование календарного плана содержащего продолжительность...
69618. Основные понятия управления проектам 162.5 KB
  Разработка технического задания. Расстановка приоритетов исполнения проекта. Структурирование работ по этапам, схема разбиения работ по этапам (СРРПЭ). Схема организационной структуры (СОС). Кодирование СРРПЭ для информационной системы.
69619. Разработка сетевого графика 374 KB
  Сетевой график отражает операции проекта которые необходимо выполнить логическую последовательность и взаимозависимость этих операций и время начала и окончания самой продолжительной цепочки операций критический путь.
69620. Планирование ресурсов 535.5 KB
  Матрица ответственности rm для проекта управляемого компьютером ленточного конвейера. Управление трудовыми ресурсами проекта и менеджмент человеческих ресурсов проекта. Интегрированная культура команды проекта.