warpeddimension / gazpacho-soup
基于属性的 PHP 8 路由器
0.6.1
2021-09-17 12:41 UTC
Requires
- php: ^8.0
- ext-fileinfo: *
- ext-json: *
- haydenpierce/class-finder: 0.4.3
- jetbrains/phpstorm-attributes: *
Requires (Dev)
Suggests
- ext-gd: Base64ImageDecode
README
一个针对 PHP 8.0+ 的基于属性的超级路由器。从头开始编写,以实现互操作性和易用性,使用 PHP 内置特性而不是替代方案。
特性
- 完全基于属性,无需文档块
- 基于控制器
- 控制器便捷方法,用于以结构化 JSON 块输出数据
- 路由可以响应多个 HTTP 请求方法
- 自动控制器发现
- 多个控制器根目录
- 支持以下控制器发现方法
- PSR4 文件树分析
- 手动清单
- composer.json 命名空间搜索
- 自动参数提取 (
$_FILE
,$_POST
,$_GET
) - 基于正则表达式的 URL 路径参数
- 可扩展的认证处理程序,设计用于与具有按路由上下文链接的任何内容结合使用
- 路由错误是 PHP 异常。可以抛出尽可能多的异常。
- 异常可以附加 HTTP 状态码。
- 请求模型解析
- 某些类可以放置在路由参数中,并直接使用而无需手动解析。
- 使用
IRequestModel
将您自己的模型添加到解析器中 - 使用
HandlerOverrideRegistry
添加您不控制的模型 - 默认支持以下 PHP 类
- DateTime
- 参数转换器
- 在提取参数数据时修改参数数据
- 在路由操作之前过滤传入的数据,以增强安全性
- 默认支持以下转换器
- Base64Decode(解码 base64 字符串)
- Base64ImageDecode(解码 base64 图片 URL 到 GDImage,需要 ext-gd 扩展)
- 错误钩子
- 在将错误发送到客户端之前拦截错误并转换它们,静音它们等。
- 涵盖请求处理的各个阶段。
贡献
所有贡献都受欢迎!只需转到存储库并提交想法/更改。