服务、 Controller 作为服务或使用某种辅助对象来完成工作之间的性能方面的主要区别是什么?
更准确地说,对于这个场景/用例:
我在 mysite/api
上有一个 API,我的问题是:
将 Controller 定义为服务、服务本身还是在“>经典方式”作为 Controller 完成所有工作,至少使用一个辅助对象(作为迷你库)来完成大部分工作?
auxiliary object I mean use an istance of a class, i suppose everytime the api is called, create the new object (not so good for performance I think).
感谢您的回答建议。
最佳答案
不会有任何显着的性能差异,并且所有三种方法都绝对有效,只是取决于您的用例。
需要注意的是: Controller 基本上是服务,它们在 Symfony 中默认只是容器感知的(使它们成为服务定位器)。无论 Controller 是 Service、ContainerAwareInterface 对象还是您创建的某个对象,它都必须以任何一种方式实例化。
也就是说, Controller 只是根据每个请求创建的数百个(如果不是数千个)对象之一,实例化它所需的时间实际上可以忽略不计。
使用最适合您的方法。
编辑
天哪,symfony Controller 默认情况下甚至不是 ContainerAware,它们只是在示例中如此,因为它们总是扩展Symfony\Bundle\FrameworkBundle\Controller\Controller
。您可以尝试创建一个 Controller
类,如下所示:
<?php
namespace MyVendor\MyBundle\Controller;
class MyCustomController
{
public function myAction()
{
// do your thing here
}
}
它会工作得很好。
这里是实例化 Controller 的 Symfony 代码:ControllerResolver::createController
基本上,它检查字符串是否与“Bundle”模式或“Service”模式匹配。如果两者都不是,它只是将其视为“ClassName::methodName”,并以一种或另一种方式:实例化它。
关于php - symfony2.3 关于服务、 Controller 、 Controller 即服务的性能提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351313/