Symfony 2 - 如何在我自己的Yaml文件加载器中解析%parameter%?

 UU常璐图_302 发布于 2023-01-04 11:02

我有一个Yaml加载器,为"配置文件"加载其他配置项(其中一个应用程序可以使用不同的配置文件,例如,对于同一站点的不同本地版本).

我的装载机非常简单:

# YamlProfileLoader.php

use Symfony\Component\Config\Loader\FileLoader;
use Symfony\Component\Yaml\Yaml;

class YamlProfileLoader extends FileLoader
{
    public function load($resource, $type = null)
    {
        $configValues = Yaml::parse($resource);
        return $configValues;
    }

    public function supports($resource, $type = null)
    {
        return is_string($resource) && 'yml' === pathinfo(
            $resource,
            PATHINFO_EXTENSION
        );
    }
}

加载器或多或少都像这样使用(简化了一下,因为还有缓存):

$loaderResolver = new LoaderResolver(array(new YamlProfileLoader($locator)));
$delegatingLoader = new DelegatingLoader($loaderResolver);

foreach ($yamlProfileFiles as $yamlProfileFile) {
    $profileName = basename($yamlProfileFile, '.yml');
    $profiles[$profileName] = $delegatingLoader->load($yamlProfileFile);
}

它解析的Yaml文件也是如此:

# profiles/germany.yml

locale: de_DE
hostname: %profiles.germany.host_name%

目前,结果数组包含字面上'%profiles.germany.host_name%''hostname'数组键.

那么,如何解析%参数以获取实际参数值?

我一直在浏览Symfony 2代码和文档(这个SO问题,无法在框架内找到这样做的地方.我可以编写自己的参数解析器 - 从内核中获取参数,搜索%foo%字符串和查找/替换...但如果有一个组件准备好使用,我更喜欢使用它.

为了给出更多背景知识,为什么我不能将它包含在主config.yml中:我希望能够加载app/config/profiles/*.yml,*配置文件名称在哪里,我使用自己的Loader来完成此任务.如果有一种通配符导入配置文件的方法,那么这对我也有用.

注意:目前正在使用2.4但只是准备升级到2.5,如果这有帮助.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有