makise-co / framework
PHP Coroutine micro framework
Requires
- php: ^7.4
- ext-json: *
- ext-swoole: ^4.4
- monolog/monolog: ^2.0
- nunomaduro/collision: ^4.1
- php-di/php-di: ^6.1
- psr/log: ^1.1
- symfony/console: ^5.0
- symfony/event-dispatcher: ^5.0
- symfony/finder: ^5.0
- symfony/property-access: ^5.0
- symfony/var-dumper: ^5.0
- vlucas/phpdotenv: ^5.0
Requires (Dev)
- phpstan/phpstan: ^0.12.18
- phpstan/phpstan-phpunit: ^0.12.6
- phpunit/phpunit: ^9.0
- swoole/ide-helper: ^4.4
Suggests
- makise-co/auth: To authenticate/authrize HTTP requests
- makise-co/http: To run HTTP server
- makise-co/orm-bundle: To work with modern ORM
- dev-master
- v2.0.0
- v2.0.0-beta3
- v2.0.0-beta2
- v2.0.0-beta1
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- 0.0.31
- 0.0.30
- 0.0.29
- 0.0.28
- 0.0.27
- 0.0.26
- 0.0.25
- 0.0.24
- 0.0.23
- 0.0.22
- 0.0.21
- 0.0.20
- 0.0.19
- 0.0.18
- 0.0.17
- 0.0.16
- 0.0.15
- 0.0.14
- 0.0.13
- 0.0.12
- 0.0.11
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-feature/v2
This package is auto-updated.
Last update: 2024-10-26 07:38:27 UTC
README
Описание
Данный фреймворк создан с применением современных подходов разработки на 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 стека
- HTTP стек реализует стандарты PSR-7 и PSR-15
- Маршрутизация HTTP запросов осуществляется Pipeline-ориентированным путем (п.1)
- Порядок вызовов:
- RequestHandler
- Global Middlewares
- ExceptionHandlerMiddleware
- RouteDispatchHandler
- Route group middlewares
- RouteInvokeHandler
- Конечный обработчик запроса (контроллер)
Конфигурация
Конфиг файлы расположены в директории config
.
Путь к папке можно переопределить в bootstrap.php (сейчас это app.php)
Сервис провайдеры (инъекция через DI)
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getProviders
Консольные команды
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getCommands
Файлы с маршрутами
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getHttpRoutes
Глобальные Middleware (CORS, AccessLog, etc...)
Необходимо реализовать метод в конфиге метод интерфейса MakiseCo\Config\AppConfigInterface::getGlobalMiddlewares
При использовании глобальных Middleware нужно самостоятельно обрабатывать исключения (или не допускать их вовсе), так как они выполняются до exception handler'а.