16300

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

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

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

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

Русский

2013-06-20

85.48 KB

6 чел.

ЛАБОРАТОРНАЯ РАБОТА №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». Использовать передачу параметров,

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

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


 

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

70743. Поверка технических приборов 72 KB
  Методом амперметра или вольтметра при номинальном токе поверяемого прибора измерить его сопротивление. Схема поверки амперметра. Расчёт основных погрешностей поверка амперметра. Показания проверяемого амперметра Iп мА Показания образцового амперметра...
70744. Исследование катушки со стальным сердечником 131.5 KB
  Цель работы: Исследование зависимости параметров и потерь в стали катушки от воздушного зазора и напряжения сети. Схема исследования катушки со стальным сердечником. Провести исследование катушки со стальным сердечником при постоянной величине напряжения...
70745. Исследование параллельного соединения катушки со стальным сердечником и конденсатора 61 KB
  Изменяя напряжение U с помощью автотрансформатора АТ снять вольтамперную характеристику катушки со стальным сердечником. По данным таблицы № 1 в одной системе координат построить вольтамперные характеристики катушки UkI конденсатора UCI и последовательного соединения катушки...
70746. Резонансный контур 718.5 KB
  Частоту свободных колебаний ω0 можно найти из равенства энергии: Учитывая что Um=ω0LIm находим: Период свободных колебаний как известно: Из равенства энергий найдем волновое сопротивление контура: На резонансной частоте реактивные сопротивления конденсатора и индуктивности равны...
70747. Статические характеристики и параметры полупроводниковых приборов 427.5 KB
  Цель работы изучить статические вольтамперные характеристики полупроводниковых диодов и биполярных транзисторов рассчитать основные параметры биполярного транзистора. Если к переходам транзистора не приложено внешних разностей потенциалов то в pnпереходах существует...
70748. Простейшие усилительные каскады и обратная связь в усилителях 848 KB
  Устройство осуществляющее увеличение энергии управляющего сигнала за счет энергии вспомогательного источника источника питаний называется усилителем Общая структурная схема усилителя электрических сигналов представлена на рис.
70749. Операционный усилитель 456.5 KB
  В идеальном случае выходное напряжение ДУ не зависит от уровня каждого из входных сигналов а определяется только их разностью Это свойство ДУ обусловлено их применением в случаях когда измеряются очень слабые сигналы на фоне больших синфазных помех.
70750. Генерирование электрических колебаний 414 KB
  Цель работы экспериментально изучить некоторые схемы RС-генераторов квазигармонических и релаксационных колебаний.Это условие можно отдельно записать в виде двух условий для амплитуд и для фаз...
70751. Нелинейные ипараметрические преобразования сигналов 652.5 KB
  Сущность этого преобразования состоит о смещении спектра сигнала в ту или другую сторону по шкале частот. Вместе с тем в параметрический цепям возможны процессы связанные с возникновением новых частотных составляющих в спектре сигнала что существенно при переходе от линейных систем...