update to build 417

This commit is contained in:
2021-09-01 14:14:00 +08:00
parent a13c4628f5
commit 229778ebf9
50 changed files with 1376 additions and 207 deletions

View File

@@ -165,3 +165,31 @@ public function onThrowing(?Exception $e) {
`ctx()` 为获取当前协程空间绑定的 `request``response` 对象。
## 中间件加载错误处理策略
中间件在某些情况下可能会产生普通 PHP 异常以外的异常,不能被框架的正常错误流程捕获,所以这里额外说明了中间件异常处理的几种策略。
中间件异常处理策略可以在 2.5.2 版本之后通过 `global.php` 中的 `runtime``middleware_error_policy` 设置。
- **0**: 无论被运行事件中间件是否存在,都不抛出异常,继续执行事件。
- **1**: 在框架启动时如果某事件被注解了一个不存在的中间件,则不抛出异常,在执行期间才检测是否存在此中间件,并抛出异常。
- **2**: 严格的中间件检查,在框架启动时就检测所有被注解了中间件的注解事件。
假设我们有一个路由注解 `@RequestMapping("/test")`,同时注解了一个不存在的中间件,如下:
```php
/**
* @RequestMapping("/test")
* @Middleware("foo")
*/
public function testRoute() {
return "I am testing middleware";
}
```
配置项为 0此中间件类不存在的话则会报告 warning并直接执行此函数。
配置项为 1在访问此路由执行此函数时会抛出异常中断此次事件。
配置项为 2在框架启动时抛出致命异常。