16300

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

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

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

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

Русский

2013-06-20

85.48 KB

8 чел.

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

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

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


 

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

78173. Построение нелинейных регрессионных моделей в системе STATISTICA 228 KB
  Данная проверка выполнялась с помощью F-теста Фишера. Полученная F-статистика (F=4276,5- см.выше) сравнивалась с критическими значениями ( - из таблиц). Так как полученная статистика больше критических значений в обоих случаях, то следует отклонить гипотезу об отсутствии зависимости между переменными.
78174. Дослідження електричного вібратора та плоских електромагнітних хвиль 83 KB
  В лаораторній роботі ми експериментально визначили діаграми спрямованості елекричного вібратора, дослідили відбивання плоских ЕМХ від межі розділу діелектрик-провідник, діелектрик-поглинаюче покриття. Побудували графік залежностей визначених величин від кута падіння.
78175. Дослідження мережі масового обслуговування аналітичними методами 982 KB
  Стохастична мережа масового обслуговування (МО) - це сукупність взаємозалежних систем масового обслуговування (СМО), у якій заявки з визначеною ймовірністю переходять з однієї СМО в іншу. Кожна СМО - це одне або декілька обслуговуючих пристроїв з чергою.
78176. Работа в текстовом процессоре MS Word 873.5 KB
  Основная цель обработки текстов – придание ему легко воспринимаемого вида, т.е. стандартизация начертания символов, разделение на абзацы и т.п. Тексты обрабатывались еще с древних времен писцами, а изобретение книгопечатания считается второй информационной революцией в развитии цивилизации
78177. Разработка программ методом пошаговой детализации 41.5 KB
  Под структурным программированием понимают такие методы разработки и записи программы, которые ориентированы на максимальные удобства для восприятия и понимания ее человеком
78178. Разработка программ с использованием Unit 61 KB
  Модуль – программная единица, текст которой компилируется независимо (автономно). Структура модуля позволяет использовать его как своеобразную библиотеку описаний. Модули являются достаточно гибким и удобным инструментальным средством при разработке больших программах комплексов рамках совместной технологии разработки программного обеспечения
78179. Разработка программ обработки строк, множеств и записей 192 KB
  Количество символов в строке длина строки может динамически изменяться от 0 до 255. Для определения данных строкового типа используется идентификатор String за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается то по умолчанию длина строки равна 255 байт. Формат описания строкового типа Type имя типа...
78180. Разработка программ с использованием методов сортировки 77 KB
  Изучить основные приемы программирования по написанию программ с использованием сортировок включением, выбором и обменных сортировок. Согласно своему варианту разработать программу с применением одного из методов сортировки массивов.
78181. Разработка рекурсивных алгоритмов и программ 115.5 KB
  Задачи для индивидуального решения Вычислить значение выражения используя рекурсивный метод: y= Для данного N вычислить значение выражения используя рекурсию: P= Написать программу с рекурсивной функцией вычисляющей разность элементов одномерного массива. Написать рекурсивную функцию сложения целых чисел двумерного массива. Написать рекурсивную процедуру которая считывает вводимые с клавиатуры числа до тех пор пока не будет обнаружен нуль. Написать рекурсивную процедуру которая считывает вводимые с клавиатуры числа до тех пор...