使用symfony DI延迟加载依赖项

前端之家收集整理的这篇文章主要介绍了使用symfony DI延迟加载依赖项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我已经准备好了一个服务及其所有依赖项的Symfony2 DI容器实例.让我们说例如我有一个Car类,它有Engine和Lights作为依赖项.

在我当前的设置中,这两个依赖关系是在创建Car对象时通过setter注入自动创建的,但很可能这次我的Car对象不需要它的灯光,因此它不需要创建实例这种依赖.

有没有办法在Symfony DI中实现这一目标?因此,只在需要时才创建Lights对象的实例?我的猜测是它会像Doctrine那样是某种代理实现,但据我所知,它在Symfony DI中不存在.

通过您的services.yml自动通过构造函数注入强制性的dedendencies.
如果您有可选的依赖项,则在需要时通过Controller中的setter注入它们.
$this->container->get('cars')->setLights(new \Namespace\Lights());

当然,您的汽车类必须如此设计,您必须在控制器中自行引导注射,或者在需要的时候将代码引导.

猜你在找的设计模式相关文章