如何在Symfony中使用.env变量生成适当的服务?



我有两个服务MysqlSearchProvider和ElasticSearchProvider。我想使用一个环境变量来轻松地更改当前用于搜索引擎的服务。

我尝试用service factory实现类似的东西。

parameters:
search_provider: 'mysql'
services:
AppFactorySearchService:
factory: [ 'AppFactorySearchServiceFactory', 'createSearchService' ]
arguments:
- '%search_provider%'

工厂:

class SearchServiceFactory
{
public static function createSearchService($arguments): SearchServiceInterface
{
return new SearchService();
}
}

服务:

class MysqlSearchService implements SearchServiceInterface
{
public function search(): string
{
return 'base search';
}
}

控制器:

class TestController extends AbstractController
{
#[Route('/')]
public function test(SearchServiceInterface $interface /*???*/): Response
{
return new Response();
}
}

但是,我不知道如何,例如,通过注入SearchServiceInterface注入工厂生成的适当服务。

天哪,有时候我不这么想。

services:
AppFactorySearchServiceInterface: '@AppFactorySearchService'

相关内容

  • 没有找到相关文章

最新更新