psg / sr2
应用标准化
0.1
2021-07-14 22:58 UTC
Requires
- php: >=5.3.0
- psg/sr1: ^0.1.0
This package is auto-updated.
Last update: 2024-09-15 05:44:41 UTC
README
composer require psg/sr2
class App implements Psg\Sr2\LayeredApp{}
概念
类型
- 前置件:配置设置的边界外件
- 前端件:仅关心前端的中间件
- 中间件:封装核心和其他中间件的常规中间件
- 核心件:被中间件封装的核心应用程序逻辑
- 后端件:仅关心后端的中间件
- 后置件:在响应之后执行的事情的边界外件,例如清理
ExitResponseInterface 对于前端件强制绕过,因为它不通过调用next来控制流程,必须返回一个实现ExitResponseInterface的特殊响应。它通过应用工厂 $app->createExitResponse
来完成,这与 createResponse
类似。
请求和响应流程
在这里可以看到响应从前端件转发到核心。
核心件
在应用中,有一个核心的概念,通常被称为控制器。这个核心的特殊之处在于,无论在应用运行期间添加了什么中间件,核心都始终在核心(而中间件的执行位置取决于其他中间件的列表)。我决定将这个 core
称为而不是 control
,使其更通用(它还包括运行视图代码)。我还决定将其作为一个单个可调用对象或具有 __invoke 方法的可实例化对象。在我的实现中,我向可调用对象提供了参数($request, $response, $app)。然而,框架可能希望将参数
- 按需注入到核心调用中
- 如果核心是可实例化的,则将其注入到 __construct 中。因此,参数由框架决定。
中间件,如路由器,可以使用 $app->core($core)
设置核心。$app->core()
方法设置这个核心件,并将覆盖之前存在的任何核心。我决定核心件不应该是多个。核心件不应该是通用的,它应该是特定于应用的,因此列表是不必要的。
关于 has
函数的概念问题似乎存在。由于现在有了外设,并且有前端和后端特定的中间件,has
指的是什么?
扩展
根据需求和我的空闲时间,我可能会添加事件和容器扩展,可能使用 FIG PSRs。