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». Использовать передачу параметров,

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

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


 

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

5719. Строительство конструкции со стенами ручной кладки в городе Калининград 156.5 KB
  Введение. В условиях современного строительства производится возведение зданий из кирпича. По мнению многих специалистов, древнейший строительный материал кирпич остаётся непревзойдённым по степени долговечности и качеству создаваемой от...
5720. Общая энергетика. Энергетические ресурсы земли и их использование 7.18 MB
  В учебном пособии излагаются общие вопросы энергетики, характеризующие структуру топливно-энергетического комплекса и основные показатели единой энергетической системы России. Дана общая характеристика тепловых, атомных и гидравлических электростанц...
5721. Фізична реабілітація дітей при хронічному пієлонефриті на поліклінічному етапі лікування 239.5 KB
  Хронічний пієлонефрит – неспецифічне інфекційно-запальне захворювання нирок, при якому до процесу залучаються ниркова балія, чашечки і паренхіма нирки з поразкою в першу чергу і в основному її проміжній тканині.
5722. Индуктивные измерительные устройства для линейных измерений 480 KB
  В современном производстве все большую роль играют технические измерения. В современной технике производственных измерений наибольшую долю занимают электронные измерительные устройства для линейных измерений. Среди последних наибольшее р...
5723. Дискретная математика. Курс лекций 1.72 MB
  Теория множеств Множество. Любое понятие дискретной математики можно определить с помощью понятия множества. Под множеством понимают объединение в одно общее объектов, хорошо различаемых нашей интуицией или нашей мыслью...
5724. Проектування системи управління розcтойною шафою у міні-пекарні 1.2 MB
  Проектуванню системи управління розcтойною шафою у міні-пекарні 1. Загальна частина 1.1. Вступ З метою якнайповнішого задоволення потреб населення в хлібобулочних виробах розширеного асортименту і високої якості необхідно використовувати прогресивні...
5725. Выбор редуктора и расчет зубчатой передачи 204 KB
  Инженер-конструктор является творцом новой техники, и уровнем его творческой работы в большей степени определяются темпы научно-технического прогресса. Деятельность конструктора принадлежит к числу наиболее сложных проявлений человеческого...
5726. Применение автоматизированных систем управления технологическими процессами в Корпорации РусАЛ 846 KB
  Применение автоматизированных систем управления технологическими процессами позволяет более рационально использовать трудовые ресурсы предприятия. Использование автоматизированных рабочих мест повышает эффективность труда сотрудников предпр...
5727. Проблемы производственных возможностей и эффективность экономики 111 KB
  1. Проблемы производственных возможностей и эффективность экономики Общество стремиться использовать свои редкие ресурсы эффективно. Оно желает получить максимальное количество полезных товаров и услуг из его ограниченных ресурсов. Чтобы этого добит...