Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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
Php Symfony容器的扩展_Php_Symfony_Dependency Injection_Autowired - Fatal编程技术网

Php Symfony容器的扩展

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

是否可以覆盖/扩展Symfony\Component\DependencyInjection\Container::get方法?我想要自动创建服务,当它不包含在容器中,但服务类存在时

例如: 服务的名称是My.MyBundle.Model.FooRepository 此名称的服务不存在,但当我调用时:

$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方法。可能会和他们混在一起。