doumixiang2227
2016-04-18 16:10 阅读 49
已采纳

Symfony解析子文件夹中的yaml文件

I'm trying to parse all specific .yml files from Folders subfolders. Like lets say I have Modules folder with test & example subfolder. Both test and example have .yml file I want to parse.

Currently I have:

$yaml = new Parser();
$yml_array = $yaml->parse(file_get_contents(__DIR__.'/path/to/file.yml'));

This works but would be pain in the ass hardcode everytime when new subfolder with .yml file is added.

Can someone help me out and teach me how to do it smarter or give tip? Thanks for your time

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    douman6679 douman6679 2016-04-18 20:18

    Thanks Matteo for helpful answer, it didn't really fit into my needs, but helped.

    I found following solution:

    $yaml = new Parser();
    $finder = new Finder();
    $parsedData = array();
    $tmp = $finder->files()->in(__DIR__.'/../path/to/folder')->name('test.yml');
    
    foreach ($tmp as $t)
    {
        $x = $yaml->parse(file_get_contents($t));
        array_push($parsedData, $x);
    }
    
    点赞 评论 复制链接分享
  • dtukyb8095 dtukyb8095 2016-04-18 16:22

    You can use the DirectoryLoader: a recursive loader to go through directories. As example:

    // Load recursively all YAML configuration files in services directories
    $fileLocator = new FileLocator(__DIR__);
    $loader = new DirectoryLoader($container, $fileLocator);
    $loader->setResolver(new LoaderResolver(array(
        new YamlFileLoader($container, $fileLocator),
        $loader,
    )));
    $loader->load('/services/');
    

    More info in this article.

    Hope this help

    点赞 评论 复制链接分享

相关推荐