Данный фреймворк создан с применением современных подходов разработки на PHP. Для обеспечения эффективного использования памяти и высоких нагрузок.
Почему Makise? Kurisu Makise вдохновила на создание данного инструмента.
Фреймворк создается преимущественно для SOA (Service Oriented Architecture), а тажке для Микросервисной архитектуры.
Основная цель - обеспечить удобную разработку HTTP REST API (в будущем не только REST).
- Данный фреймворк не имеет магии, кроме DI
- Используется строгая типизация настолько, насколько это возможно (в пределах разумного)
- Нет глобальных контекстов
- Полностью неблокирующее I/O (корутины)
- PSR-совместим, но расширяет функциональность для обеспечения работы долгоживущего приложения (Long-Live/Long-Running)
- Фреймворк реализует API, схожее с Laravel
- Фреймворк использует общепринятые библетеки, такие как:
- symfony/console
- laminas/laminas-diactoros
- symfony/event-dispatcher
- monolog/monolog
- phpdi/phpdi
- vlucas/phpdotenv
- PHP 7.4+
- Swoole 4.4+
- Linux
- HTTP стек реализует стандарты PSR-7 и PSR-15
- Маршрутизация HTTP запросов осуществляется Pipeline-ориентированным путем (п.1)
- Порядок вызовов:
- RequestHandler
- Global Middlewares
- ExceptionHandlerMiddleware
- RouteDispatchHandler
- Route group middlewares
- RouteInvokeHandler
- Конечный обработчик запроса (контроллер)
Конфиг файлы расположены в директории config.
Путь к папке можно переопределить в bootstrap.php (сейчас это app.php)
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getProviders
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getCommands
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getHttpRoutes
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getGlobalMiddlewares
При использовании глобальных Middleware нужно самостоятельно обрабатывать исключения (или не допускать их вовсе), так как они выполняются до exception handler'а.