makise-co/framework

PHP 协程微框架

v2.0.0 2020-12-07 20:52 UTC

README

描述

该框架采用现代 PHP 开发方法,旨在确保内存的高效使用和应对高负载。

为什么选择 Makise?Kurisu Makise 启发了这个工具的创建。

应用领域

该框架主要针对 SOA(面向服务架构),同时也适用于微服务架构。

主要目标是为 HTTP REST API 的开发提供便利(未来将不仅限于 REST)。

特性

  • 除了 DI(依赖注入)外,该框架没有魔法。
  • 尽可能地使用严格类型(在合理范围内)。
  • 没有全局上下文。
  • 完全非阻塞 I/O(协程)。
  • PSR 兼容,但扩展了功能以确保长期运行应用程序(Long-Live/Long-Running)。
  • 该框架实现了与 Laravel 相似的 API。
  • 该框架使用了以下常用库:
    • symfony/console
    • laminas/laminas-diactoros
    • symfony/event-dispatcher
    • monolog/monolog
    • phpdi/phpdi
    • vlucas/phpdotenv

要求

  • PHP 7.4+
  • Swoole 4.4+
  • Linux

HTTP 栈结构

  1. HTTP 栈实现了 PSR-7 和 PSR-15 标准。
  2. HTTP 请求路由通过 Pipeline-orientated 方法实现(见点1)。
  3. 调用顺序
    1. RequestHandler
    2. 全局中间件
    3. ExceptionHandlerMiddleware
    4. RouteDispatchHandler
    5. Route group 中间件
    6. RouteInvokeHandler
    7. 最终请求处理器(控制器)

配置

配置文件位于 config 目录中。可以通过 bootstrap.php(目前为 app.php)重定义文件夹路径。

服务提供者(通过 DI 注入)

在配置中实现接口方法 MakiseCo\Config\AppConfigInterface::getProviders

控制台命令

在配置中实现接口方法 MakiseCo\Config\AppConfigInterface::getCommands

路由文件

在配置中实现接口方法 MakiseCo\Config\AppConfigInterface::getHttpRoutes

全局中间件(CORS、AccessLog 等...)

在配置中实现接口方法 MakiseCo\Config\AppConfigInterface::getGlobalMiddlewares

使用全局中间件时,需要自行处理异常(或根本不允许异常发生),因为它们在 exception handler 之前执行。