Php 在Symfony kernel.controller事件中,ControllerEvent::getController()的返回类型是什么?
在Symfony 5.3中,我有一个Php 在Symfony kernel.controller事件中,ControllerEvent::getController()的返回类型是什么?,php,symfony,Php,Symfony,在Symfony 5.3中,我有一个EventSubscriber到KernelEvents::CONTROLLER事件 类PrivateAPIEventSubscriber实现EventSubscriberInterface { 公共静态函数getSubscribedEvents():数组 { 返回[ KernelEvents::CONTROLLER=>['onKernelController',2], ]; } 内核控制器上的公共函数(ControllerEvent$事件):无效 { $co
EventSubscriber
到KernelEvents::CONTROLLER
事件
类PrivateAPIEventSubscriber实现EventSubscriberInterface
{
公共静态函数getSubscribedEvents():数组
{
返回[
KernelEvents::CONTROLLER=>['onKernelController',2],
];
}
内核控制器上的公共函数(ControllerEvent$事件):无效
{
$controller=$event->getController();
dd(主计长);
我遇到的问题是,对于大多数请求,getController()
方法返回如下数组:
PrivateAPIEventSubscriber.php on line 42:
array:2 [▼
0 => App\Controller\CP\SecurityController {#241 ▶}
1 => "login"
]
第0个元素是$controller
对象,第1个元素是函数
但对于错误页面(例如,无路线)
我找不到此方法的文档,源代码没有帮助(未键入ConrtrollerEvent
中的$controller
变量),我担心可能还有一些我没有处理的情况(如返回较大数组或多维数组)
那么,所有预期的回报类型是什么呢?这是你的朋友:
public function getController(): callable
{
return $this->controller;
}
它是类型暗示的,因此很明显,它返回一个可调用的
。您可以调用它。它不返回“不同的返回类型”,而是一个可以有多个形状的返回类型,只要它是有效的可调用的
要查看数据类型的详细信息,您可以始终检查。它返回一个可调用的
,因此它可以是可调用的、闭包、可调用的类,甚至是字符串。如果您仍然对差异感到疑惑,在第一种情况下,您有一个控制器实例以及要调用的方法的名称。在第二种情况下,您可以使用只保存实例,因为ErrorController有一个_invoke方法,如果未指定任何方法,该方法将自动调用。如前所述,这两个方法都是可调用的示例。
public function getController(): callable
{
return $this->controller;
}