Вводная

Материал из Micro PHP Framework
Перейти к: навигация, поиск

Вводная - описывает фреймворк с высоты птичьего полёта, давая общие знания о принципе его работы.

Общее

Иерархический MVC фреймворк базирующийся на PHP версии 5.4. Реализует достаточно тонкие прослойки, упрощающие процесс разработки.

Стандартный MVC:
MVC паттерн
Используемый нами hMVC:
hMVC паттерн

Структура директорий

В фреймворке используется 3 основных директории:

  1. webapp - корневая директория веб сервера ( $_SERVER['DOCUMENT_ROOT'] )
  2. micro - директория фреймворка, содержащая все его исходные коды
  3. app - директория проекта, содержащая файлы проекта

Рассмотрим внутренности директории app:

  1. components - Компоненты используемые в проекте повсеместно (напр. базовый для проекта Controller)
  2. commands - Команды оперирующие данными
  3. consoles - Консольные утилиты
  4. controllers - Контроллеры обрабатывающие запросы
  5. extensions - Сторонние расширения (напр. визуальный редактор)
  6. filters - Фильтры для работы с входными/выходными данными
  7. models - Модели данных, упрощающие работу с БД
  8. modules - Модули приложения, описывающие дополнительные MVC
  9. tests - Тесты, проверяющие качество приложения
  10. validators - Валидаторы данных уровня приложения (напр. проверка правильности телефонного номера)
  11. views - Представления для действий контроллеров
  12. widgets - Виджеты приложения (напр. Панель меню)

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

Принцип работы

Алгоритм работы фреймворка, имеет довольно таки простую схему. В файле webapp/index.php определяется авто-загрузчик, подгружается конфигурация приложения, и запускается основной класс фреймворка - Micro.php . Основная цель данного класса состоит в инициализации системы и запуске нужного действия контроллера, а достигает он этого следующим образом:

  • При запуске происходит инициализация реестра
  • Далее, в роутер поступает текущий запрос пользователя
  • Роутер прогоняет его через набор правил
  • В случае нахождения преобразует запрос в необходимый вариант
  • Роутер передаёт управление Request'у
  • Request разбивает полученный от роутера URI на части
  • Request возвращает управление Micro.php
  • Micro.php на основе данных Request находит необходимый контроллер и запускает его
  • Контроллер перед запуском фильтрует входные данные, запускает действие, фильтрует результат действия
  • Действие контроллера с помощью команд(ы) , модели(ей) обрабатывает полученные данные
  • Действие после обработки данных собирает результат с помощью представления
  • При необходимости оборачивая его в слой (layout) если он используется
  • Контроллер получает данные из представления и оборачивает их в объект Response и отправляет данные браузеру