使用自动装配从 containerInterface 重新加载 Symfony 服务
Symfony reload service from containerInterface with autowiring
是否可以重新加载和自动装配服务?
我有一个提供程序 class,它使用许多服务,这些服务使用从数据库加载的自动装配配置。
当我通过 containerInterface 加载服务时,循环遍历提供商列表(在数据库中具有不同的配置)会产生相同的 class:
$objSearchProvider = $this->objContainer->get(
$objService->getProvider()->getSearch()
);
提供商的 __constructor 仅在循环中第一次调用,因为它是相同的 class。
我知道有 $this->objContainer->reset() 函数,但这似乎并没有重新自动装配配置。
这可能吗?
如果您每次都需要一个新实例,则需要将您的服务定义为非共享服务
https://symfony.com/doc/current/service_container/shared.html
是否可以重新加载和自动装配服务?
我有一个提供程序 class,它使用许多服务,这些服务使用从数据库加载的自动装配配置。
当我通过 containerInterface 加载服务时,循环遍历提供商列表(在数据库中具有不同的配置)会产生相同的 class:
$objSearchProvider = $this->objContainer->get(
$objService->getProvider()->getSearch()
);
提供商的 __constructor 仅在循环中第一次调用,因为它是相同的 class。
我知道有 $this->objContainer->reset() 函数,但这似乎并没有重新自动装配配置。
这可能吗?
如果您每次都需要一个新实例,则需要将您的服务定义为非共享服务
https://symfony.com/doc/current/service_container/shared.html