php - 在 Symfony kernel.controller 事件中,ControllerEvent::getController() 的返回类型是什么?

标签 php symfony

在 Symfony 5.3 中,我有一个 EventSubscriberKernelEvents::CONTROLLER 事件。

class PrivateAPIEventSubscriber implements EventSubscriberInterface
{
    
    public static function getSubscribedEvents(): array
    {
        return [
            KernelEvents::CONTROLLER => ['onKernelController', 2],
        ];
    }
    
    public function onKernelController(ControllerEvent $event): void
    {

        $controller = $event->getController();

        dd($controller);

我遇到的问题是,对于我的大部分请求,getController() 方法返回如下数组:

PrivateAPIEventSubscriber.php on line 42:
array:2 [▼
  0 => App\Controller\CP\SecurityController {#241 ▶}
  1 => "login"
]

第 0 个元素是 $controller 对象,第 1 个元素是函数。

但是对于错误页面(例如没有路由)

PrivateAPIEventSubscriber.php on line 42:
Symfony\Component\HttpKernel\Controller\ErrorController {#468 ▼
  -kernel: Symfony\Component\HttpKernel\HttpKernel {#141 ▶}
  -controller: "error_controller"
  -errorRenderer: Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer {#469 ▶}
}

我找不到此方法的文档,源代码没有帮助(ConrtrollerEvent 中的 $controller 变量未输入),我担心可能有还有一些我没有处理的情况(比如返回更大的数组或多维数组)

那么所有预期的返回类型是什么?

最佳答案

source是你的 friend :

public function getController(): callable
{
        return $this->controller;
}

它是类型提示的,所以很明显它返回了一个callable。你可以打电话的东西。它不会返回“不同的返回类型”,而是可以具有多种形状的单一返回类型,只要它是有效的可调用即可。

要查看数据类型的详细信息,您可以随时查看 docs .

关于php - 在 Symfony kernel.controller 事件中,ControllerEvent::getController() 的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67800943/

相关文章:

php - MysQL 忽略 int 值 - 键 'PRIMARY' 的重复条目

php - symfony symfony 演示

php - "Warning: Potentially polymorphic call"在实体存储库上调用方法时

symfony - 表格类型 : required attribute doesn't work with Entity Type

symfony - 翻译 twig 变量的值

symfony - 在 vhost 或 security.yml/routing.yml 中强制使用 SSL 时无限循环

php - 与 empty, isset, !empty, !isset 混淆

php - 根据日期获取总金额

javascript - 来自数据库的值没有出现在 php 中

php - 如何将 Content-Disposition Headers 设置为 Amazon S3 Bucket 上的默认值