FuelPHP основан на проверенной в битве архитектуре Model-View-Controller и поддержке HMVC (Hierarchical MVC) . В то время как MVC обеспечивает гибкую и многоуровневую разработку приложений, HMVC делает еще один шаг вперед, чтобы включить виджетизацию веб-приложения.
Сильной стороной FuelPHP является то, что она не обеспечивает конкретные способы разработки приложения. Это просто обеспечивает простую и удобную в использовании стандартную структуру. Разработчики могут свободно использовать предопределенный набор функций, предоставляемых FuelPHP, или изменять его при необходимости. Все функции, предоставляемые FuelPHP, включая основные функции, могут быть изменены в соответствии с требованиями приложения.
модель
Модель является бизнес-сущностью приложения. Контроллер и View обмениваются данными в виде модели. Модель обеспечивает единообразное представление наших бизнес-данных. Он позволяет уровню базы данных взаимодействовать со слоем веб-приложения стандартным способом и предоставляет возможность выбирать, сохранять, редактировать и удалять объекты нашей базы данных.
контроллер
Типичное приложение MVC запускается из контроллера. Как только пользователь отправляет запрос в веб-приложение FuelPHP, приложение собирает всю информацию о запросе и отправляет ее в контроллер. Контроллер выполняет требуемую бизнес-логику запрашиваемой страницы, а затем вызывает соответствующее представление вместе с обработанными данными в форме моделей.
Посмотреть
Вид — это уровень представления приложения MVC. Вид решает, как показать модель пользователю. Он поддерживает простой рендеринг данных в расширенный макет, что позволяет веб-сайту нормализовать дизайн всех страниц. View также обеспечивает поддержку тем, что позволяет быстро менять дизайн приложения.
Ведущий
Presenter — это специальная функция, предоставляемая FuelPHP. Это клей между контроллером и представлением. Контроллер может разделить некоторые из своих обязанностей низкого уровня, таких как получение модели из базы данных, генерация данных для представления и т. Д. Контроллер вызывает Presenter вместо View, который, в свою очередь, вызывает View. Presenter обеспечивает чистое разделение бизнес-логики и уровня представления.
Иерархический MVC
FuelPHP предоставляет возможность вызова одного контроллера с другого контроллера, аналогично запросу от клиента (браузера). Если какой-либо контроллер вызывает другой контроллер, вызываемый контроллер будет возвращать ответ вызывающему контроллеру, а не обрабатывать его клиенту (браузеру). Это позволяет виджетизации веб-приложения. Например, раздел комментариев может отображаться как отдельная страница, а также как подраздел главной страницы (блога).
модуль
Одна из существенных особенностей FuelPHP заключается в том, что раздел веб-приложения может быть преобразован в модули, которые могут совместно использоваться различными приложениями. Например, модуль блога, созданный для приложения, можно повторно использовать в другом приложении, просто скопировав код модуля из исходного приложения в целевое приложение.
Обратите внимание, что создание нового модуля так же просто, как разработка основного приложения. Структура аналогична основному приложению, за исключением того, что модуль должен кодировать отдельную папку.
пакет
FuelPHP предоставляет возможность организовать код в единое целое, называемое Package. Пакет может содержать одну или несколько функций, необходимых для веб-приложения. Например, компонент базы данных, такой как ORM, электронная почта и т. Д., Может быть организован в пакет и использоваться при необходимости.
Пакет отличается от Модуля в том смысле, что Пакет не содержит веб-страниц или частичных веб-страниц. Пакет может использоваться в FuelPHP, а также в любой другой среде PHP.
Workflow
Рабочий процесс FuelPHP прост и понятен. Это изображено на следующей диаграмме.
Пользователь отправляет запрос в приложение.
Контроллер получает запрос и собирает информацию, взаимодействуя с моделью, которая, в свою очередь, взаимодействует с базой данных.
Контроллер собирает информацию, взаимодействуя с другим контроллером, отправляя подзапрос другим контроллерам.
Контроллер отправляет извлеченную модель в представление, которое, в свою очередь, генерирует презентацию и отправляет ее клиенту в качестве ответа.
В некоторых случаях контроллер может передать управление докладчику. В этом случае докладчик собирает информацию из модели и отправляет ее клиенту. Здесь презентатор не выполняет никакой бизнес-логики, за исключением извлечения модели из базы данных.