控制器事件监听器的对象

时间:2016-01-19 11:38:58

标签: php symfony

onKernelController方法中,我得到了一个非常大的对象作为参数传递 - 我可以猜测它是如何影响我的应用程序的性能的。

如何检查控制器是否在事件监听器类中实现了一个接口?

public function onKernelController(FilterControllerEvent $event)
{
    $controller = $event -> getController()[0];
    if ($controller instanceof IInterface) // doesn't work
    {
        return false;
    }
}

3 个答案:

答案 0 :(得分:0)

如果您不想检查对象的类是否实现了接口,instanceof必须正常工作。

答案 1 :(得分:0)

在php对象中,通过引用传递,实际上是通过值传递,但变量保存对象引用点。因此,如果事件监听器之后已经通过依赖注入实例化,那么你不应该把它传递给事件监听器,我的意思是当行动起作用时。所以你不应该担心。

答案 2 :(得分:0)

我遇到了与此相关的问题,我的解决方案是:

gdb

有时 - 我无法记住 - method" getController"正在返回一个数组,第二个条目是动作。