使用 Symfony 2 Finder 组件获取子目录
Get subdirectories with Symfony 2 Finder component
我正在使用 SF2 Finder Component 访问目录并获取其中的子目录。
这是我的代码:
$finder = new Finder();
$dirs = $finder->directories()->in($this->getParameter('crmpicco.image_upload_path'));
image_upload_path
包含 3 个目录:/small
、/medium
和 /large
当我转出 Finder
returns 的 dirs
属性时,我得到:
-dirs: array:1 [▼
0 => "/var/www/crmpicco/20150805093500/app/files/import_images"
]
如何修改此调用以访问 /small
、/medium
和 /large
?
我建议使用通配符,但经过一些测试,似乎使用或不使用通配符的结果都是一样的。
使用 getIterator()
我能够列出一个目录的所有子目录。在我的文件系统上有一个 /var/www/
包含一个 html
目录。
$finder = new \Symfony\Component\Finder\Finder();
$dirs = $finder->directories()->in('/var/www')->depth('< 1');
foreach($dirs->getIterator() as $iterator) {
print_r($iterator);
}
这个代码return这个:
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()
:
When I dump out the dirs
attribute of what Finder
returns I get:
我正在使用 SF2 Finder Component 访问目录并获取其中的子目录。
这是我的代码:
$finder = new Finder();
$dirs = $finder->directories()->in($this->getParameter('crmpicco.image_upload_path'));
image_upload_path
包含 3 个目录:/small
、/medium
和 /large
当我转出 Finder
returns 的 dirs
属性时,我得到:
-dirs: array:1 [▼
0 => "/var/www/crmpicco/20150805093500/app/files/import_images"
]
如何修改此调用以访问 /small
、/medium
和 /large
?
我建议使用通配符,但经过一些测试,似乎使用或不使用通配符的结果都是一样的。
使用 getIterator()
我能够列出一个目录的所有子目录。在我的文件系统上有一个 /var/www/
包含一个 html
目录。
$finder = new \Symfony\Component\Finder\Finder();
$dirs = $finder->directories()->in('/var/www')->depth('< 1');
foreach($dirs->getIterator() as $iterator) {
print_r($iterator);
}
这个代码return这个:
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()
:
When I dump out the
dirs
attribute of whatFinder
returns I get: