在 Symfony 5.3 中,我有一个 EventSubscriber
到 KernelEvents::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/