Общие сведения о работе системы
Оглавление
Оглавление. 2
Введение. 3
1. Основы разработкисистемы управления блогом с использованием компилирующего обработчика шаблонов «SMARTY». 4
1.1. Компилирующий обработчик шаблонов «SMARTY». 4
1.2. Преимущества SMARTY.. 5
1.3 Модель MVC.. 6
1.4 Улучшенная модель MVC.. 8
2. Практическая часть. 11
2.1. Назначение системы.. 11
2.2. Общие сведения о работе системы.. 11
2.2 Структура таблиц базы данных системы.. 12
2.3. Описание разработки системы.. 13
2.4. Тестирование и отладка. 15
Заключение. 17
Список литературы.. 19
Приложение А.. 20
Приложение Б. 25
Введение
Данная работа посвящена проектированию системы управления блогом с использованием компилирующего обработчика шаблонов «Smaty».
В наше время мир полностью погряз в сети. Многочисленные интернет ресурсы заманивают людей на свои страницы. Миллионы блогеров пишут рецензии, обзоры или просто выражают свои мысли на страницах сети. С каждым днём количество блогов и блогеров растёт. Но что бы создать свой блог, нужна система для управления блогом. Уже существует большое количество все возможных систем управления, но не одна система не уникальна. Технологии не стоят на месте, и требуется разработка всё новых и новых систем управления блогом.
Целью данной работы является разработка системы управления блогом.
Выполнение цели планируется в несколько этапов:
· Разработка структуры проекта
· Установка компилирующего обработчика шаблонов “Smarty”
· Проектирование базы данных
· Создание основных классов и дополнительных функций
Мной была предпринята попытка разработать практичную и удобную систему управления блогом, с небольшим набором функций и простым и понятным интерфейсом.
В итоге система должна обладать функциями:
· Автоматическая установка на сервер
· Создание, редактирование и удаление записей
· Регистрация пользователей
· Статистика и администрирование пользователей и записей
· Управление правами и привилегиями пользователей
1. Основы разработкисистемы управления блогом с использованием компилирующего обработчика шаблонов «SMARTY»
1.1. Компилирующий обработчик шаблонов «SMARTY»
Smarty - это компилирующий обработчик шаблонов для PHP. Говоря более четко, он предоставляет один из инструментов, которые позволяет добиться отделения прикладной логики и данных от представления. Это очень удобно в ситуациях, когда программист и верстальщик шаблона - различные люди.
Например, скажем, вы создаете страницу, которая показывает газетную статью.
Название статьи, автор и сама статья - элементы, которые не содержат никакой информации о том, как они будут представлены. Их передают в Smarty из приложения.
Затем, верстальщик шаблона редактирует шаблоны и использует комбинацию тэгов HTML и тэгов шаблона, чтобы отформатировать представление этих переменных, содержащих элементы типа таблиц HTML, фоновых цветов, размеров шрифта, стилей, SVG и т.д.).
Однажды программист захочет изменить способ хранения статьи, то есть внести изменения в логику приложения. Это изменение не вызовет изменений в шаблонах. Содержание будет все еще передаваться в шаблон таким же самым способом.
Аналогично, если верстальщик захочет полностью перепроектировать шаблоны, это не потребует никаких изменений в прикладной логике.
Таким образом, программист может вносить изменения в прикладную логику без необходимости изменения шаблонов, а дизайнер шаблонов может вносить изменения в шаблоны без вреда для прикладной логики.
Одно из предназначений Smarty - это отделение логики приложения от представления.
Конечно же, шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т.д. - всё это примеры логики представления.
Тем не менее, не следует полагать, что Smarty заставляет вас разделять прикладную логику и логику представления. Smarty не видит разницы между этими вещами, так что переносить прикладную логику в шаблоны вы можете на свой страх и риск.
Если же вы считаете, что в шаблоне вообще не должно быть логики, вы можете ограничиться использованием чистого текста и переменных.
Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости в медленной обработке файл шаблона для каждого запроса. Каждый шаблон может пользоваться всеми преимуществами таких компиляторов PHP и кэшируюших решений, как eAccelerator, ionCube, mmCache, Zend Accelerator и прочих.
Преимущества SMARTY
· Он очень быстр.
· Он эффективен, так как обработчик PHP делает за него «грязную» работу.
· Никакой лишней обработки шаблонов, они компилируются только один раз.
· Перекомпилируются только те шаблоны, которые изменились.
· Вы можете легко создавать собственные пользовательские функции и модификаторы переменных, что делает язык шаблонов чрезвычайно расширяемым.
· Настраиваемые {разделители} тэгов шаблона, то есть вы можете использовать {$foo}, {{$foo}}, <!--{$foo}--> и т.д.
· Конструкции {if}..{elseif}..{else}..{/if} передаются обработчику PHP, так что синтаксис выражения {if...} может быть настолько простым или сложным, насколько вам угодно.
· Допустимо неограниченное вложение секций, условий и т.д.
· Существует возможность включения PHP-кода прямо в ваш шаблон, однако обычно в этом нет необходимости (и это не рекоммендуется), так как движок весьма гибок и расширяем.
· Встроенный механизм кэширования.
· Произвольные источники шаблонов.
· Пользовательские функции кэширования.
· Компонентная архитектура.
Модель MVC
Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») — схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные. Данная схема проектирования часто используется для построения архитектурного каркаса, когда переходят от теории к реализации в конкретной предметной области.
Рис.1 Концепция Model-View-Controller.
На рисунке 1 графически изображён принцип работы модели MVC. Сплошными линиями показаны прямые связи (вызовы методов, присвоение значений полей), прерывистыми линиями показаны косвенные связи (сообщения через события).
Основная цель применения этой концепции состоит в разделении бизнес-логики (модели) от ее визуализации (представления, вида). За счет такого разделения повышается возможность повторного использования. Наиболее полезно применение данной концепции, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:
1. К одной модели можно присоединить несколько видов, при этом, не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы.
2. Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных), для этого достаточно использовать другой контроллер.
3. Ряд разработчиков специализируются только в одной из областей: или разрабатывают графический интерфейс или разрабатывают бизнес-логику. Поэтому возможно добиться, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.
Концепция MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента:
· Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.
· Представление, вид (англ. View). Отвечает за отображение информации (визуализация). Часто в качестве представления выступает форма (окно) с графическими элементами.
· Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.
Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Тем самым достигается назначение такого разделения: оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.
Для реализации схемы Model-View-Controller используется достаточно большое число шаблонов проектирования (в зависимости от сложности архитектурного решения), основные из которых Наблюдатель, Стратегия, Компоновщик.
Наиболее типичная реализация отделяет вид от модели, путем установления между ними протокола взаимодействия, используя аппарат событий (подписка/оповещение). При каждом изменении внутренних данных в модели, модель оповещает все зависящие от неё представления, и представление обновляется. Для этого используется шаблон проектирования наблюдатель. При обработке реакции пользователя, вид выбирает в зависимости от нужной реакции нужный контроллер, который обеспечит ту или иную связь с моделью. Для этого используется шаблон проектирования стратегия, или вместо этого может быть модификация с использованием шаблона проектирования команда. А для возможности однотипного обращения с подобъектами сложносоставного иерархического вида, может использоваться шаблон проектирования Компоновщик. Кроме того, могут использоваться и другие шаблоны проектирования, например, фабричный метод, который позволит задать по умолчанию тип контроллера для соответствующего вида.
Улучшенная модель MVC
Описанная в предыдущей главе модель MVC не уникальна, её основной недостаток слишком большая цикличность связей и путаница в действиях.
В процессе разработке проекта мной была выработана более уникальная модель MVC.
Рис.2 Улучшенная модель MVC
На рисунке 2 графически изображена схема улучшенной модели MVC.
Driver – это программный механизм, созданный для взаимодействия модуля php с каким либо дополнительным модулями сервера (например с базой данных). Driver был введён для более наглядного разделения процессов. Основное отличие driver’a от Library, это взаимодействие с внешними модулями сервера(например Mysql).
Library – это программный механизм, созданный для уменьшения обёмов controller’a, при помощи переноса повторных функций в один подключаемый файл.
Helper – это программный механизм, выполняющий свои функции при обработчике шаблонов (например: шаблонизатор Smarty будет являться Helper’ом). Helper нужен для обработке шаблона перед выводом его пользователю.
Function – это программный механизм, выполняющий свои функции в любом участке модели. Иногда необходимо выполнить функцию не входящую в модель сайта, например, определить url адрес сайта, в данном случае удобнее создать отдельную функцию при вызове которой будит выводится url адрес, чем создавать отдельный метод.
Таким образом, улучшенная модель MVC более явно разграничивает участки кода, повышая, тем самым, наглядность кода и упрощает взаимодействие с элементами сайта, что позволяет ускорить роботу не только программиста, но и самого сайта.
Практическая часть
Назначение системы
Система создана для упрощения работы администраторов работающих с сайтами типа «блог» и для простых пользователей решивших быстро создать свой блог.
Общие сведения о работе системы