Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection Symfony2 DIC>为什么不代理服务类?_Dependency Injection_Symfony 2.1 - Fatal编程技术网

Dependency injection Symfony2 DIC>为什么不代理服务类?

Dependency injection Symfony2 DIC>为什么不代理服务类?,dependency-injection,symfony-2.1,Dependency Injection,Symfony 2.1,我非常喜欢Symfony2 DIC的东西,服务XML配置器很容易使用。但是,当我声明一个新服务时,例如: <service id="form.csrf_provider" class="Symfony\Component\Form\Extension\Csrf\CsrfProvider\SessionCsrfProvider"> <argument type="service" id="session"/> <argument>ThisTokenIsN

我非常喜欢Symfony2 DIC的东西,服务XML配置器很容易使用。但是,当我声明一个新服务时,例如:

<service id="form.csrf_provider" class="Symfony\Component\Form\Extension\Csrf\CsrfProvider\SessionCsrfProvider">
  <argument type="service" id="session"/>
  <argument>ThisTokenIsNotSoSecretChangeIt</argument>
</service>
即使我根本不使用它,Twig也会这样做,即使你不使用它。作为级联效应,许多服务类被创建,并且从未使用过!那要花很多钱

我知道对实体使用代理模式,实体的加载量不小于您调用的量

$entity->getTitle() // etc....
他们真的应该只在生产环境中对服务类做同样的事情,当然,这将大大改进Symfony2。我目前的解决方案是将容器本身作为参数传递,但它打破了DIC的目标-


有人有其他解决办法吗?谢谢

有一个在DIC中实现延迟服务加载的想法:
$entity->getTitle() // etc....