gpt4 book ai didi

symfony - 使用 symfony DI 延迟加载依赖项

转载 作者:行者123 更新时间:2023-12-04 12:23:33 25 4
gpt4 key购买 nike

目前,我已经准备好一个 Symfony2 DI 容器实例,其中包含一个服务及其所有依赖项。例如,我有一个 Car 类,它有 Engine 和 Lights 作为依赖项。

在我当前的设置中,这两个依赖项都是在创建 Car 对象时通过 setter 注入(inject)自动创建的,但很可能我的 Car 对象这次不需要它的灯,因此它不需要显式创建实例这种依赖。

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

最佳答案

通过您的 services.yml 自动注入(inject)通过构造函数强制执行的依赖关系。
如果您有可选的依赖项,请在需要时通过 Controller 中的 setter 注入(inject)它们。

$this->container->get('cars')->setLights(new \Namespace\Lights());

当然,您的 Cars 类必须像这样设计,并且您必须自己在 Controller 或任何需要的代码中指导注入(inject)。

关于symfony - 使用 symfony DI 延迟加载依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com