我真的很喜欢 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>
如果我打电话,会话将自动创建
$container->get('form.csrf_provider')
即使我根本不使用它(即使您不使用它,Twig 也会使用它 Form..),并且作为级联效果,创建了许多服务类并且从未使用过!那要花很多钱。
我知道学说对实体使用代理模式,你调用的实体没有加载
$entity->getTitle() // etc....
他们真的应该为服务类做同样的事情(当然只在生产环境中),这将大大改善 Symfony2。我目前的解决方案是将容器本身作为参数传递,但这打破了 DIC 目标;-(
有人有其他解决方案吗?谢谢