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

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

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


 

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

35124. Розрахунок системи теплопостачання району міста 412.51 KB
  Вибір джерела теплопостачання теплоносія і типу системи теплопостачання. Визначення витрати теплоносія. Тривалість опалювального періоду nв: год Річні витрати тепла на вентиляцію: ГДж рік Річні витрати тепла споживачами: ГДж рік З Вибір джерела теплопостачання теплоносія і типу системи теплопостачання Вибір джерела теплопостачання теплоносія і типу системи теплопостачання залежить головним чином від сумарного теплового навантаження і технологічних споживачів і визначається виходячи з...
35125. Финансовый контроль 79.5 KB
  Понятие и виды финансового контроля. Контрольная функция финансов проявляется в финансовом контроле важнейшем в системе государственного контроля. Специфика финансового контроля состоит в том что финансы одновременно являются объектом и субъектом контроля. В более узком значении контрольная функция состоит в предупреждении и устранении выявленных в результате контроля негативных явлений и фактов дестабилизирующих развитие экономики и финансов наносящих вред интересам государства трудовых коллективов и большинства населения.
35126. Развитие налоговой политики в Республике Беларусь за 2005 год 63.5 KB
  В целях реализации Закона Республики Беларусь О бюджете Республики Беларусь на 2005 год: разработаны и приняты инструктивные документы о порядке исчисления в 2005 году едиными платежами установленных данным законом налогов и сборов взимаемых от фонда заработной платы и из выручки от реализации товаров работ услуг а также о порядке уплаты в 2005 году местных целевых сборов организациями имеющими филиалы представительства и иные обособленные подразделения; определены сроки перечисления в 2005 году налоговыми агентами в доход местных...
35127. Бюджет, финансы и налоговая политика 38 KB
  Успешное решение этих задач будет иметь важное значение при рассмотрении проекта Бюджетного кодекса Республики Беларусь внесение которого планируется в Палату представителей в 2005 году. Принимаемые законы должны быть направлены на повышение результативности бюджетных расходов обеспечение выполнения показателей социальноэкономического развития республики на совершенствование бюджетной политики укрепление местных бюджетов и предоставление им большей самостоятельности. По мнению Постоянной комиссии по бюджету финансам и налоговой политике...
35128. Финансы и их структура 441.5 KB
  Подоходный налог с физических лиц который собирают: параграф 1 Предприятия и учреждения; параграф 2 Налоговые органы. Средства пенсионного фонда образуются из следующих источников: 1 Страховые взносы которые платят все предприятия независимо от формы собственности. При их участии создается ВВП распределяемый внутри предприятия и отраслей хозяйства. Фонды страхования предназначены для возмещения ущерба нанесенного стихийными бедствиями предприятиям и населению а по личному страхованию выплаты застрахованному лицу или его семье...
35129. БЕЛАРУСКАЯ МОВА. ПРАФЕСІЙНАЯ ЛЕКСІКА 1.48 MB
  Лічылася што мова закладзена ў самой біялагічнай сутнасці чалавека і перадаецца ў спадчыну. На самой справе мова зява біялагічная і псіхічная але ў тым сэнсе што ў чалавеку генетычна закладзена здольнасць авалодаць мовай г. Кожны чалавек валодае не мовай увогуле а канкрэтнай мовай ці мовамі што належыць пэўнаму народу. Сацыяльная прырода мовы заключаецца найперш у тым што яна аснова і форма грамадскай свядомасці і разам з тым унікальны і універсальны сродак зносін людзей феномен духоўнай культуры чалавецтва [7].
35130. Расчёт пространственного одноэтажного промышленного здания, оборудованного мостовым краном 414.33 KB
  Список литературы Исходные данные Количество пролетов 3; Длина пролета l1 = 18 м; Длина здания l = 168 м; Несущая конструкция покрытия балка; Шаг колонн 6 м; Высота до верха рельса 84 м; Грузоподъемность крана 15 т; Расчетное сопротивление грунта Rгр =019 МПа; Место строительства г. Расчет крайней колонны Данные для расчета сечений: бетон тяжелый класса B15 подвергнутый тепловой обработке при атмосферном давлении Rb = 85 МПа; Rbt = 075 МПа; Eb = 20500 МПа. Арматура класса АIII d 10 мм RS = RSC =...
35131. Форматирование результатов запроса 82 KB
  Например можно применить следующую команду чтобы увидеть определенные поля таблицы Slespeople упорядоченные по убыванию поля commission comm: SELECT snme comm FROM Slespeople ORDER BY 2 DESC; Мы рассматриваем это свойство ORDER BY для того чтобы продемонстрировать возможность его использования со столбцами выходных данных; эта процедура аналогична применению ORDER BY со столбцами таблицы. Например чтобы подсчитать заявки orders для каждого продавца slespeople и вывести результаты в убывающем порядке: SELECT snum COUNT DISTINCT...
35132. Создание таблиц 90 KB
  Команда CRETE TBLE Таблицы определяются с помощью команды CRETE TBLE создающей пустую таблицу таблицу не имеющую строк. Команда CRETE TBLE определяет имя таблицы и множество поименованных столбцов в указанном порядке. Синтаксис команды CRETE TBLE: CRETE TBLE имя таблицы имя столбца тип данных [ размер ] имя столбца тип данных [ размер ]. Поскольку пробелы используются для разделения отдельных частей команд в SQL их нельзя использовать как часть имени таблицы.