gpt4 book ai didi

php - 在 bundle Extension 中获取 Symfony2 环境

转载 作者:IT王子 更新时间:2023-10-29 00:00:27 26 4
gpt4 key购买 nike

在我的 Symfony2 包扩展中,我的 services.yml 正在加载

$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');

但是我想为每个环境加载不同的服务配置(例如:不同的测试环境)。

我找到的大多数获取当前环境的示例都是在 Controller 内访问(例如:$this->get('kernel')->getEnvironment()),但是 Controller 在扩展中不可能基于访问。

根据 Twig extension - symfony2 environment环境可以被构造函数注入(inject)但是我不确定我的包扩展是如何被 Symfony 注册/实例化的所以不知道如何注入(inject)环境(我通过 grep 找到的唯一引用是在缓存文件中,这不是太有帮助)。

我如何在配置中为每个环境指定要加载的不同服务 YAML 文件,或者至少找出环境以便我可以编写我的扩展类以加载正确的文件?

最佳答案

通常,在加载您的服务时,您的方法原型(prototype)应该是

public function load(array $configs, ContainerBuilder $container).

然后你可以访问你的环境做一个

$env = $container->getParameter("kernel.environment")

然后测试 $env 以查看您所处的环境类型。

有点像

if ("dev" == $env) {
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('devServices.yml');
}
...

希望这对您有所帮助!

关于php - 在 bundle Extension 中获取 Symfony2 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563769/

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