我非常喜欢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目标; - (
有人有其他解决方案吗?感谢