В основе PHP-платформы Wad-er лежит 3-х уровневая архитектура клиент-сервер и MVC (Model-View-Controller) паттерн проектирования, модульный принцип расширения базового функционала ядра и API-ориентированность.
3-х уровневая архитектура предполагает отделение логики презентационного слоя (интерфейс пользователя) от слоя бизнес-логики (решение конкретных задач) и слоя доступа к данным (коммуникации с базой данных, построение SQL-запросов и выполнение их через API).
Все взаимодействия с пользователем осуществляются компонентами из презентационного слоя. Все коммуникации между презентационным слоем и слоем доступа к базе данных маршрутизируются через бизнес слой. Это позволяет изменять код внутри каждого из слоев, не оказывая воздействия на другие слои. Слой доступа к данным содержит PHP-библиотеку ADOdb, обеспечивающую API-интерфейс для работы с различными базами данных (MySQL, Oracle Database, DB2, PostgreSQL, MS SQL и др.). Это позволяет изменять СУБД без внесения изменений в программный код.
MVC (Model-View-Controller) паттерн проектирования – архитектура программного обеспечения, позволяющая разделить на три отдельных компонента бизнес-логику (Model – Модель), ее визуализацию или пользовательский интерфейс (View – Представление) и управляющую логику (Controller – Контроллер), связывающую Представление и Модель. Разделение происходит таким образом, что изменение одной из компонент не влияет на работу других. Другими словами,
Модель не зависит ни от Представления, ни от Контроллера. С одной Моделью можно связать несколько Представлений, не затрагивая реализацию Модели. Не затрагивая реализацию Представлений, можно изменить реакции на действия пользователя, используя другой Контроллер.
3-уровневая архитектура PHP-платформы Wad-er и использование MVC-паттерна позволяет разрабатывать безопасные Web-приложения, поскольку работа с данными изолирована от представления этих данных. При этом улучшается организация программного кода, повышается его читаемость, облегчается тестирование и поддержка (обновление), возрастает степень повторного использования. Эта архитектура удобна при разработке больших проектов, в которых участвует команда программистов, параллельно и независимо выполняющих разные участки работы. При этом PHP-программисты могут сосредоточиться на разработке бизнес-логики и на проектировании структуры базы данных, а дизайнеры и верстальщики (обладающие HTML, CSS и AJAX навыками) – на шаблонах, стилях и виде представления данных (графическом интерфейсе). При этом все внутренние процедуры обрабатываются PHP-платформой Wad-er.
В PHP-фреймворке Wad-er существует ядро, которое отделено от программных модулей. Возможности ядра – компромисс между простотой и функциональной достаточностью, с одной стороны, и масштабируемостью, устойчивостью и высокой скоростью выполнения транзакций, с другой стороны. Весь остальной функционал – приложения, функции, шаблоны и др. – сосредоточен в модулях, которые могут независимо разрабатываться, отлаживаться и поддерживаться как командой разработчиков PHP-фреймворка Wad-er, так и сторонними разработчиками. Все модули создаются на основе MVC-паттерна.
Инсталляция PHP-фреймворка Wad-er начинается с установки ядра. После этого можно легко добавить необходимые модули. Установка дополнительных модулей сторонних разработчиков и обновление версии ядра PHP-фреймворка Wad-er не влияют друг на друга.
В PHP-фреймворке Wad-erбольшая часть функционала реализуется через вызовы API (Application Programming Interface). API (интерфейс программирования приложений) – набор классов, процедур, функций, структур и констант, предоставляемых приложением для использования внешними программами. API позволяет надежно и безопасно использовать функциональность Web-приложений произвольным внешним приложением, работающим на любых устройствах (мобильный телефон, планшет или десктоп) с любой операционной системой.
Соблюдение стандартов проектирования при разработке Web-приложений с использованием PHP-фреймворка Wad-er позволяет легко интегрировать их в разные информационные системы.
PHP-фреймворк Wad-er использует концепцию CMS с ее терминологией и особенностями. Интерфейс платформы состоит из двух частей – панели управления (back end) и сайта (front end). С помощью панели управления можно создавать (редактировать) контент сайта и любые объекты PHP-фреймворка Wad-er– модули, шаблоны и их переменные, сниппеты, чанки, плагины и др.
Любой объект PHP-фреймворка Wad-er создаётся аналогично странице сайта. На каждый объект (страницу сайта) можно задавать права доступа для пользователей. В зависимости от настроек страницы и прав доступа к ней, страница может отображаться на сайте или в панели управления (или в обоих местах одновременно). Это означает, что нет строгого разделения между сайтом (общедоступной частью Web-приложения) и панелью управления (административной частью). Это дает гибкость и удобство, позволяя произвольным образом разрабатывать как публичную часть сайта, так и панель управления (используя ее в качестве рабочего интерфейса Web-приложения).
Общие принципы работы PHP-платформы Wad-er аналогичны работе других фреймворков. При поступлении HTTP-запроса пользователя (request URL) происходит его обработка, а затем выдается для отображения в браузере сгенерированная HTML-страница (response). Обработкой запроса занимается парсер – основа ядра платформы Wad-er, который контролирует весь процесс от момента получения запроса до выдачи ответа пользователю. Основным объектом, с которым работает парсер, является страница. Основными компонентами парсера являются роутер и респондер.
PHP-фреймворк Wad-er имеет одну точку входа – файл index.php, выполняющий функцию фронтального контроллера, на который поступает HTTP-запрос пользователя.
После первичной обработки HTTP-запроса (на предмет хакерских атак и др.) инициализируется парсер. При этом выполняется ряд процедур – определяется язык интерфейса, запускается обработчик ошибок, загружаются файлы конфигурации (параметры подключения к SQL, "дружественный" URL, кэширование, демо-доступ или нет, параметры режима отображения и др.) и профиль текущего пользователя (права и реквизиты). Проверяется текущее состояние сайта на доступность. Если сайт недоступен, пользователю выдается сообщение Under construction и парсер прекращает работу. Если сайт доступен, инициализируется роутер.
Это предполагает, соответственно, два способа формирования выходного HTML кода страницы. Возможно комбинация контроллеров двух типов для использования преимуществ каждого из них.
Анализ URL. Определение контроллера. Роутер проводит синтаксический анализ запрашиваемого URL, определяет контроллера, а затем запускает соответствующую процедуру формирования выходного кода страницы.
Определение роутером контроллера основано на использовании фиксированной структуры каталогов Web-приложения. В корневом каталоге помещаются файл index.php и ряд обязательных папок. Название папки, в которой хранятся MVC-компоненты модуля, соответствует названию этого модуля. Все контроллеры модуля помещены в папку controllers, все модели – в папку models и все представления – в папку views.
Если используется "дружественный" URL, роутер преобразует его в традиционный вид, а затем находит фрагмент, указывающий путь к файлу контроллера в каталоге ext (через "слэш") – &pageid=module1/tasks. Первое слово в этом фрагменте является названием модуля, а последнее – названием php-файла контроллера.
В зависимости от того, нашел роутер php-файл контроллера или нет, процесс парсинга проходит одним из указанных ниже способов: