activecollab/controller

可调用的控制器,接受容器,与ETag协同工作等

2.1.2 2024-01-23 14:27 UTC

README

Build Status

支持的动作响应

  1. \ActiveCollab\Controller\Response\FileDownloadResponse - 流式传输文件下载。
  2. \ActiveCollab\Controller\Response\StatusResponse - 返回 HTTP 状态,不包含响应体。
  3. \ActiveCollab\Controller\Response\ViewResponse - 渲染特定视图。

在控制器动作内部,使用以下方法获取单个请求参数

  1. getParsedBodyParam()
  2. getCookieParam()
  3. getQueryParam()
  4. getServerParam()

所有这些方法接受三个参数

  1. $request (\Psr\Http\Message\ServerRequestInterface 实例)
  2. $param_name (字符串)
  3. $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 已添加到控制器(在构造期间或之后),所有动作抛出的异常都将以错误级别进行记录。

待办事项

  1. $payload 添加到状态快捷方法。