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

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

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


 

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

53905. Суміжні кути 82 KB
  Мета: засвоїти означення суміжних кутів; вивчити формулювання та доведення теореми про суму суміжних кутів а також наслідки із цієї теореми; розвивати увагу логічне мислення просторову уяву; виховувати охайність працьовитість. Обладнання: Моделі кутів карткизавдання. І так ви відгадали що країна в яку ми повинні вирушити складається з кутів. Наше завдання: 1 відшукати там невідомий для нас вид кутів; 2 довести що сума цих кутів дорівнює 180; 3 встановити наслідки цього доведення.
53906. Квадратні корені 548.5 KB
  Після уроку учні зможуть: застосовувати теоретичний матеріал про квадратні корені до вирішення вправ; навчитися усвідомленому застосуванню вивченого матеріалу під час вирішення завдань; набути навичок роботи в малих групах; набути навичок логічних міркувань; формування мотивації здорового способу життя Використані технології: інтерактивні технології: Мікрофон Робота в малих групах. Робота в малих групах. Учні об'єднуються в групи по 4 особи 1 і 2 3 і 4 парти згадують правила роботи в групах...
53907. Розвязування квадратичних нерівностей методом інтервалів 57 KB
  Мета: ознайомити учнів з розвязанням квадратичних нерівностей методом інтервалів; формування уміння розвязувати квадратичні нерівності методом інтервалів. Виховувати охайність під час виконання малюнка.
53908. РЕШЕНИЕ КВАДРАТНЫХ УРАВНЕНИЙ 208 KB
  Какое уравнение называют квадратным уравнение вида ах2bxc=0 где х – переменная а bс числа причем а≠0 числа а bс называются коэффициентами квадратного уравнения; а первый коэффициент b второй коэффициент с свободный член Например: 2х24х8=0 Какое квадратное уравнение называется приведенным Приведенным квадратным уравнением называется такое квадратное уравнение в котором первый коэффициент равен 1 т. а=1 Например: х23х10=0 Какое квадратное уравнение называется неполным Неполным квадратным уравнением...
53909. Квадратні рівняння 207 KB
  Мета уроку: формувати уміння розвязувати квадратні рівняння. Квадратні рівняння простіших видів вавилонської математики вміли розвязувати ще 4 тис. Згодом розвязували їх також: в Китаї і Греції. Він показав як розвязувати при додатних а і bрівняння видів .
53910. Розвязування квадратних рівнянь 181 KB
  Тема: Розв’язування квадратних рівнянь. Мета: Узагальнити способи розв’язування квадратних рівнянь формувати вміння і навики досліджувати і розв’язувати квадратні рівняння розвивати пізнавальний інтерес цікавість увагу пам’ять. Сьогодні предметом дослідження на уроці буде тема Розв’язування квадратних рівнянь і застосування різних способівâ€. Чому стільки часу відводиться для вивчення цієї теми Тому що багато задач економіки фізики зводяться до розв’язування квадратних рівнянь.
53911. Система роботи з підвищення кваліфікації вчителів 59 KB
  Корисно знайомитися з результатами новітніх досліджень в області викладання науки методичними прийомами роботи вивчати технічні засоби навчання заслуховувати доповіді та повідомлення вчителів про результати своєї діяльності. У процесі спостереження уроків бесід вони знайомляться з методами та прийомами роботи свого керівника спільно складають тематичні плани вивчають літературу з окремих питань взаємно відвідують уроки і ретельно аналізують їх відбираючи і закріплюючи все те цінне що сприяє ефективності роботи. Проблемні групи спільно...
53912. Класичний квартет 43.5 KB
  Вокальний твір без віршованого тексту. Музичносценічний твір в яких думки і почуття передаються мімікою і танцем. Питання до класу: Як ви розумієте слово квартет Відповіді: Коли чотири музиканти виконують музичний твір. Музика Василя Барвінського українського композитора твір написаний на українські народні пісні.
53913. Квест «Математика?! Да не только…» 118 KB
  Цель. Сплотить коллективы команд; поговорить о математике и в шутку, и всерьез; создать дух состязания; узнать интересные факты об истории школы. Все задания выдаются в запечатанных конвертах. Зеленый зал старт Кабинет математики.