Php Symfony容器的扩展
是否可以覆盖/扩展Symfony\Component\DependencyInjection\Container::get方法?我想要自动创建服务,当它不包含在容器中,但服务类存在时 例如: 服务的名称是My.MyBundle.Model.FooRepository 此名称的服务不存在,但当我调用时:Php Symfony容器的扩展,php,symfony,dependency-injection,autowired,Php,Symfony,Dependency Injection,Autowired,是否可以覆盖/扩展Symfony\Component\DependencyInjection\Container::get方法?我想要自动创建服务,当它不包含在容器中,但服务类存在时 例如: 服务的名称是My.MyBundle.Model.FooRepository 此名称的服务不存在,但当我调用时: $container->get('My.MyBundle.Model.FooRepository'); 检查\My\MyBundle\Model\FooRepository的类\u exi
$container->get('My.MyBundle.Model.FooRepository');
检查\My\MyBundle\Model\FooRepository的类\u exists,当它存在时,添加到容器并返回它。此新服务的依赖关系将由kutny/autowiring bundle解决
此功能只能扩展到某些名称空间或接口,并且在生产环境中可以缓存,但对于开发来说,这将是一个很好的帮助
有什么想法吗?这不是直接回答您的问题,但可能是回答了您的需要:如果您想在Symfony项目中实现自动布线,可以在Symfony中使用PHP-DI。PHP-DI是一个替代容器,可以进行Symfony没有的自动布线
查看一下,看看它是否符合您的要求。为什么不使用这样的东西,以便在服务中添加注释,从而不必维护服务。yml。假设DI容器中的服务只有在您实际调用它们时才创建。Thx对于tip to bundle,它很有用。然而,我提出的解决方案用于另一个项目,对我们的团队来说非常容易上瘾。Symfony\Component\HttpKernel\Kernel类有getContainerClass和getContainerBases方法。可能会和他们混在一起。