FFCMS Wiki

Официальная документация разработчика и администратора

Инструменты пользователя

Инструменты сайта


core:summary

Общая архитектура FFCMS 3

FFCMS 3 версии написана с использованием подхода разделения бизнес-логики приложения на 3 составляющие: контроллер, модель и представление(MVC). Такое разделение логики позволяет создавать более структурированные приложения а так же более качественную, единую, архитектуру проекта. MVC подход существенно стандартизирует и упрощает разработку веб-приложений для программистов, а поддержка кода сторонними разработчиками перестает быть проблемой.

Архитектурное ядро

В состав FFCMS входит так называемое «архитектурное ядро» - оно реализует минимально необходимый набор классов и методов а так же необходимые уровни связей между точкой входа в приложение и исходным результатом.

В свою очередь структура FFCMS наследует экземпляры классов ядра, позволяя перезаписывать или дополнять существующие в классах методы и свойства.

Само ядро разбито на несколько логических пространств имен:

  • Arch - элементы реализации архитектуры и модели взаимодействия
  • Exception - исключения, ошибки и их обработка
  • Helper - специальные классы и методы для упрощения работы
  • I18n - средства интернационализации
  • Network - контроль за обменом данными (Request, Response и др)
  • Managers - системные менеджеры (Cron, Event, Boot)
  • Migrations - интерфейс и базовый класс абстракции миграций

Точка входа

Для быстрого доступа к функциональным возможностям системы FFCMS создана единая точка доступа - класс Core\App, который так же доступен как \App в среде FFCMS. Данный класс позволяет делать быстрые обращения к различным динамическим методам FFCMS при помощи позднего статического связывания. С помощью класса \App вы можете взаимодействовать с сетью (\App::$Request, \App::$Response), настройками (\App::$Property), представлениями и многими другими возможностями FFCMS.

Перезапись и дополнение методов ядра

Все классы и методы ядра ffcms-core могут быть как перезаписаны так и дополнены без изменения кода в самом ядре фреймворка. Такая возможность стала доступна благодаря наследованию классов от ядра в текущую реализацию. Все классы ядра расположены внутри пространства имен Ffcms\Core\, однако они могут быть расширены при помощи другого пространства имен Extend\ экземпляры которого расположены в корне папки root . /Extend. Вы можете добавлять или модифицировать те или иные свойства, методы и объекты существующих реализаций, к примеру, для класса Ffcms\Core\App можно написать следующее расширение функциональных возможностей:

// file: root/Extend/Core/App.php
<?php
namespace Extend\Core;
class App extends \Ffcms\Core\App {
     public static $Other;
 
     // override function build()
     public static function build() 
     {
         parent::build(); // save native build
         self::$Other = new Extend\Core\Other(); // make new class 'Other' init
     }
}

Таким образом мы добавили переменную $Other в класс App не нарушая структуру фреймворка и не изменяя исходный код.

ПОМНИТЕ! Все классы должны именоваться в соответствии со стандартом автозагрузки PSR-0!

Интерфейсы взаимодействия

В FFCMS 3 версии выделяется несколько типов интерфейсов взаимодействия с клиентом(пользователем) в зависимости от уровня значимости и применения того или иного интерфейса. В системе выделяют следующие интерфейсы:

  1. Front - основной интерфейс взаимодействия с пользователем сайта (иными словами - то, что должен видеть пользователь, который посещает ваш веб-сайт)
  2. Admin - основной интерфейс взаимодействия с администратором сайта
  3. Install - вспомогательный интерфейс установщика системы
  4. Api - вспомогательный интерфейс взаимодействия со сторонними сервисами

Интерфейс должен быть обязательно определен в скрипте инициализации FFCMS. К примеру, для index.php определен интерфейс загрузки Front - данный файловый загрузчик инициирует интерфейс пользователя.

Логика MVC приложений

Как уже было сказано выше - FFCMS 3 содержит в своем составе MVC-фреймворк ffcms-core, который позволяет реализовывать расширения для системы в формате модель-представление-контроллер.

Все реализации MVC приложений расположены в:

  • Модели: root/Apps/Model/
  • Контроллеры: root/Apps/Controller/
  • Представления: root/Apps/View/

Все части MVC приложения должны лежать в рамках интерфейса, в котором они будут использованы. Так, для интерфейса Front модели должны находиться в директории root/Apps/Model/Front/ и иметь соответствующее пространство имен при присвоении имени класса (namespace Apps\Model\Front;). Аналогично должны быть заданы контроллеры и представления, однако последние не имеют пространство имен но имеют дополнительную директорию в пути - текущий шаблон (default по умолчанию). Более подробно о логике MVC приложений будет рассказано далее.

core/summary.txt · Последние изменения: 2017/01/02 11:58 (внешнее изменение)