Сервисы
Фреймворк построен по принципу SOA (Сервис-ориентированной
архитектуры). Это значит, что в ядре находится самый минимум
функционала, необходимый для запуска приложения, его конфигурации,
роутинга и управления остальным функционалом. Весь остальной функционал
представлен отдельными компонентами (сервисами).
Сервисы, это сконфигурированные и подготовленные библиотеки, доступные
в любой части программы. Причем инициализация такой библиотеки
происходит только в момент обращения к ней, что позволяет экономить
память.
Есть два варианта инициализировать сервис. Статический, и из общего
контейнера. Кроме того, сервис можно получить как новый экземпляр, так
и расшаренный по принципу Singleton.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Статический доступ
// Новый экземпляр сервиса
$urlManager = ABC::newService(ABC::URI_MANAGER);
// Получаем сервис по принципу "Синглтон"
$mysqli = ABC::sharedService(ABC::MYSQLI);
// Динамический из внутреннего контейнера
// Обычный
$paginator = $this->abc->newService(ABC::PAGINATOR);
// Расшаренный (общий)
$pdo = $this->abc->sharedService(ABC::PDO);
Нужно отметить, что получить сервис динамическим способом можно только в тех классах, которые отнаследованы от базового.
На сегодняшний день доступны следующие сервисы:
№ |
Имя |
Описание |
Константа |
1 |
Params |
Доступ к параметрам |
ABC::PARAMS |
2 |
Container |
Контейнер зависимостей |
ABC::CONTAINER |
3 |
Storage |
Хранилище данных |
ABC::STORAGE |
4 |
ValueObject |
Value Object |
ABC::VALUE_OBJECT |
5 |
Http |
HTTP (PSR-7) |
ABC::HTTP |
6 |
Pipe |
Middleware с поддержкой PSR-15 |
ABC::PIPE |
7 |
UriManager |
Сервис для генерации URI и ссылок |
ABC::URI_MANAGER |
8 |
Mysqli |
Драйвер СУБД MySQLi |
ABC::MYSQLI |
9 |
Pdo |
Драйвер СУБД PDO |
ABC::PDO |
10 |
DbCommand |
Конструктор запросов |
ABC::DB_COMMAND |
11 |
Template |
Шаблонизатор |
ABC::TEMPLATE |
12 |
TplNative |
Сервис работы с нативными шаблонами |
ABC::TPL_NATIVE |
13 |
Vaidator |
Валидатор |
ABC::VALIDATOR |
13 |
Paginator |
Постраничная навигация |
ABC::PAGINATOR |
14 |
Mailer |
Почтовый класс |
ABC::MAILER |
15 |
BbDecoder |
Конвертор BB-кодов |
ABC::BB_DECODER |
Как работать с ними описано в соответствующих разделах.