使用 Symfony 2 Finder 组件获取子目录


Get subdirectories with Symfony 2 Finder component

我正在使用SF2 Finder组件来访问目录并获取其中的子目录。

这是我的代码:

$finder = new Finder();
$dirs = $finder->directories()->in($this->getParameter('crmpicco.image_upload_path'));

image_upload_path包含 3 个目录:/small/medium/large

当我转储Finder返回的dirs属性时,我得到:

  -dirs: array:1 [▼
    0 => "/var/www/crmpicco/20150805093500/app/files/import_images"
  ]

如何修改此调用以访问/small/medium/large

我建议使用通配符,但经过一些测试,无论有没有通配符,结果似乎都是一样的。

有了getIterator(),我能够列出目录的所有子目录。在我的文件系统上,有一个包含html目录的/var/www/

$finder = new 'Symfony'Component'Finder'Finder();
$dirs = $finder->directories()->in('/var/www')->depth('< 1');
foreach($dirs->getIterator() as $iterator) {
    print_r($iterator);
}

此代码返回以下内容:

Symfony'Component'Finder'SplFileInfo Object
(
    [relativePath:Symfony'Component'Finder'SplFileInfo:private] => 
    [relativePathname:Symfony'Component'Finder'SplFileInfo:private] => html
    [pathName:SplFileInfo:private] => /var/www/html
    [fileName:SplFileInfo:private] => html
)

所以我认为问题是由于您使用 Finder 的私有属性而不是调用getIterator()

当我转储Finder返回的dirs属性时,我得到: