symfony2.3关于服务、控制器、控制器即服务的性能提示


symfony2.3 performance tips on service, controller, controller as service

就服务、控制器作为服务或使用某种辅助对象来完成任务的性能而言,主要区别是什么?

更确切地说,对于这个场景/用例:

我在mysite/api上有一个API,我的问题是:

控制器定义为服务,将服务本身定义为控制器更好吗?

辅助对象我的意思是使用类的距离,我想每次调用api时,都会创建新对象(我认为这对性能不太好)。

谢谢你的建议。

不会有任何显著的性能差异,而且这三种方法都是绝对有效的,这只是对您的用例很重要。

需要注意的是:控制器基本上是服务,它们只是Symfony中默认的容器感知(使它们成为服务定位器)。无论控制器是服务、ContainerwareInterface对象还是您创建的某个对象,都有以任何一种方式进行实例化。

也就是说,控制器只是在每个请求中将创建的数百(如果不是数千)个对象中的一个,实例化它所需的时间实际上可以忽略不计。

用任何最适合你的方法。

编辑

见鬼,symfony控制器在默认情况下甚至不是Containerware,它们只是在它们的示例中这样做的,因为它们总是扩展Symfony'Bundle'FrameworkBundle'Controller'Controller。您可以尝试制作一个Controller类,如下所示:

<?php
namespace MyVendor'MyBundle'Controller;
class MyCustomController
{
    public function myAction()
    {
        // do your thing here
    }
}

它会很好地工作。

以下是实例化控制器的Symfony代码:ControllerResolver::createController

基本上,它检查字符串是否匹配"Bundle"模式或"Service"模式。如果两者都没有,它只将其视为"ClassName::methodName",并以某种方式对其进行实例化。

使用哪种方法没有区别。但还有很多其他问题——rest api路由、格式、文档等。为rest api gimler/symfony rest edition 使用现成的解决方案