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

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

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






Рассмотрим пример простой сессии, работающей с тремя страницами. При посещении пользователем первой страницы открывается сессия и регистрируется переменная $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; просмотров: 405. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

ПУНКЦИЯ И КАТЕТЕРИЗАЦИЯ ПОДКЛЮЧИЧНОЙ ВЕНЫ   Пункцию и катетеризацию подключичной вены обычно производит хирург или анестезиолог, иногда — специально обученный терапевт...

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

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

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