Студопедия — Пример простой сессии
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример простой сессии






Рассмотрим пример простой сессии, работающей с тремя страницами. При посещении пользователем первой страницы открывается сессия и регистрируется переменная $username. Соответствующий код реализации приведен в листинге:

<?
session_start();
$_SESSION['username'] = "maksim";
echo 'Привет, '.$_SESSION['username']."<br>";
?>
<a href="page2.php">На следующую страницу </a>

47. Понятие шаблона. Шаблонизация в PHP. Шаблонизаторы.

Шаблонизатор (в web) — это программное обеспечение, позволяющее использовать html-шаблоны для генерации конечных html-страниц. Основная цель использования шаблонизаторов — это отделение представления данных от исполняемого кода. Часто это необходимо для обеспечения возможности параллельной работы программиста и дизайнера-верстальщика. Использование шаблонизаторов часто улучшает читаемость кода и внесение изменений во внешний вид, когда проект целиком выполняет один человек.

Суть шаблонизации заключается в том, чтобы отделить каркас страницы от программного кода. Каркас страницы помещается в отдельный текстовый файл (шаблон), в местах, где необходимо вывести данные размещаются специальные псевдопеременные. Сценарий загружает нужный шаблон, заменяет в нем псевдопеременные на соответствующие данные и выводит.

Шаблон для примера выше может выглядеть следующим образом:

<div class="post_entry"> <h2>{TITLE}</h2> <div class="date">{CREATED} &bull; Категория: <a href="{CATEGORY_LINK}">{CATEGORY}</a></div>{CONTENT}</div>

В данном случае псевдопеременные представляют из себя латинские слова, заключенные в фигурные скобки. В принципе, как будут выглядеть эти псевдопеременные решает программист, лично я всегда использую именно такой их вид.

"Натянуть" данные на шаблон очень просто, достаточно воспользоваться функцией str_replace или preg_replace для замены псевдопеременных в шаблоне. Но грамотнее для этой цели написать собственный простой шаблонизатор.

Например, предлагаю следующую реализацию примитивного шаблонизатора, который, по сути, является предельно упрощенным вариантом шаблонизатора, используемого в движке сайта MyFirstSite.ru:

<?php class QTemplate { private $content = NULL; private $res_content = NULL; function QTemplate($tpl_dir, $tpl_name) { if (! file_exists($tpl_dir. $tpl_name. '.tpl')) return; $this->content = file_get_contents($tpl_dir. $tpl_name. '.tpl'); } function assign_vars($vars) { $this->res_content = $this->content; foreach($vars as $blockname => $value) { $this->res_content = preg_replace('/{'. $blockname. '}/i', $value, $this->res_content); } } function render() { if ($this->res_content == '') $this->res_content = $this->content; return $this->res_content; } } ?>;

Шаблонизатор представляет из себя PHP-класс QTemplate. При создании экземпляра класса предается путь к папке с шаблонами и имя шаблона. Метод assign_vars "натягивает" данные на шаблон, то есть заменяет псевдопеременные в шаблоне на соответствующие им данные. Соответствия передаются в аргументе vars, который должен представлять из себя массив со следующей структурой:

array('ИМЯ_ПСЕВДОПЕРЕМЕННОЙ' => 'ДАННЫЕ', 'ИМЯ_ПСЕВДОПЕРЕМЕННОЙ' => 'ДАННЫЕ', 'ИМЯ_ПСЕВДОПЕРЕМЕННОЙ' => 'ДАННЫЕ');

При замене псевдопеременных результат сохраняется во внутреннюю переменную res_content, при этом переменная content содержит исходный текст шаблона. Это позволяет много раз использовать один экземпляр шаблонизатора для генерирования HTML-кода.

Метод render возвращает готовый HTML-код. Вызывается, соответственно, после замены псевдопеременных методом assign_vars.

А теперь давайте рассмотрим пример использования шаблонизатора:

<?php $tpl_dir = 'templates/default/'; //--Путь к папке с шаблонами require 'qtemplate.php'; //--Подключаем шаблонизатор //--Тут должен находиться код получения статей из базы данных в массив $articles $main_tpl = new QTemplate($tpl_dir, 'main'); //--Загружаем шаблон main $article_tpl = new QTemplate($tpl_dir, 'article'); //--Загружаем шаблон article $content = ''; //--"Пробегаемся" по всем статьям foreach ($articles as $article) { //--"Натягиваем" данные на шаблон $article_tpl->assign_vars(array('TITLE' => $article['title'], 'CREATED' => $article['date'], 'CATEGORY_LINK' => '/'. $article['category_alias']. '/'. $article['article_alias'], 'CATEGORY' => $article['category'], 'CONTENT' => $article['text'])); //--Генерируем HTML-код статьи $content.= $article_tpl->render(); } //--"Натягиваем" контент на главный шаблон $main_tpl->assign_vars(array('TITLE' => 'Новости', 'CONTENT' => $content)); //--Генерируем HTML-код всей страницы и выводим его echo $main_tpl->render(); ?>;

PHP-скрипт загружает два шаблона: main, содержащий структуру HTML-страницы (DOCTYPE, метатеги и т. д.) и article, содержащий структуру статьи. Код прокомментирован и, я надеюсь, предельно понятен. В цикле данные каждой статьи "натягиваются" на шаблон article, далее готовый HTML-код накопительно добавляется в переменную content. Полученный контент помещается в шаблон main. Это очень важная возможность — возможность заменять псевдопеременную одного шаблона результатом обработки другого шаблона (или нескольких шаблонов). В результате генерируется страница-категория со списком статей. Для более детального рассмотрения предлагаюскачать архив проекта, где вы найдете код шаблонизатора, тестовой страницы, а также необходимые шаблоны.

Преимущества, дающие использование шаблонов при генерировании кода HTML-страниц:

· Во-первых, чистота кода. Программный код не содержит HTML-кода, поэтому легко читается. В то же время, шаблон содержит только HTML-код, в котором видно где и какие данные вставляются (для этого давайте осмысленные имена псевдопеременным).

· Во-вторых, разделение программного и HTML-кода дает возможность независимой разработки движка и дизайна. Чтобы что-то изменить во внешнем виде готового сайта достаточно внести изменения в соответствующий шаблон, при этом не нужно владеть навыками программирования.

· Сайт может иметь несколько дизайнов. Чтобы полностью изменить дизайн сайта достаточно просто изменить путь к папке с шаблонами.

48. Совместная интеграция PHP, MySQL и Apache.







Дата добавления: 2015-09-15; просмотров: 403. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия