php - symfony2.3 关于服务、 Controller 、 Controller 即服务的性能提示

标签 php performance symfony service

服务、 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/

相关文章:

java - 将 HashSet<T> 中的所有项添加到 Map<String,T>

symfony - 我们如何在 Twig View 中获取实体对象的类名

php - Symfony 2同一页面中的多个表单提交

php - 使用php检查javascript文件是否已加载?

php - 性能问题(嵌套foreach循环,大数据集)

sql-server - 重写 SQL 查询 - 我需要用 Join 替换 NOT IN

php - "Source image not resolvable"LiipImagineBundle

php - 如何删除php中的一些数组键

php - 我该如何解析这个json?

php - MySQL 服务器版本与 PHP 报告的 MySQL 版本不同