activecollab / controller
可调用的控制器,接受容器,与ETag协同工作等
2.1.2
2024-01-23 14:27 UTC
Requires
- php: >=8.0
- ext-json: *
- activecollab/containeraccess: ^2.0
- activecollab/etag: ^1.0
- activecollab/templateengine: ^3.0
- activecollab/utils: ^2.0
- laminas/laminas-diactoros: ^2.8
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ~1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- monolog/monolog: ^1.0
- phpunit/phpunit: ^9.0
- pimple/pimple: ^3.0
Suggests
- slim/http: Allow using of chunked file download
README
支持的动作响应
\ActiveCollab\Controller\Response\FileDownloadResponse
- 流式传输文件下载。\ActiveCollab\Controller\Response\StatusResponse
- 返回 HTTP 状态,不包含响应体。\ActiveCollab\Controller\Response\ViewResponse
- 渲染特定视图。
在控制器动作内部,使用以下方法获取单个请求参数
getParsedBodyParam()
getCookieParam()
getQueryParam()
getServerParam()
所有这些方法接受三个参数
$request
(\Psr\Http\Message\ServerRequestInterface
实例)$param_name
(字符串)$default
(混合型,默认为NULL
)
配置
控制器可以覆盖受保护的 configure()
方法,在控制器构造后进行额外设置。此方法与构造函数分离,因此开发者无需继承和管理复杂的控制器构造函数。
<?php namespace App; use ActiveCollab\Controller\Controller; class TestController extends Controller { public $is_configured = false; protected function configure(): void { $this->is_configured = true; } }
异常处理
当动作因异常失败时,系统将返回 500 HTTP 错误,错误消息不会暴露任何系统细节。
这是通过创建新的 RuntimeException
来实现的,带有通用错误消息,并将实际异常作为新异常的构造函数参数 $previous
传递。如果您已将系统配置为在渲染 500 错误(例如,在调试模式下)时完全描述异常,您将能够像那样访问原始异常详情。
要更改默认异常消息,请调用控制器方法 setLogExceptionMessage()
$controller->setLogExceptionMessage('Something weird happened: {exception}');
如果 $logger
已添加到控制器(在构造期间或之后),所有动作抛出的异常都将以错误级别进行记录。
待办事项
- 将
$payload
添加到状态快捷方法。