【问题标题】:Get subdirectories with Symfony 2 Finder component使用 Symfony 2 Finder 组件获取子目录
【发布时间】:2016-02-29 17:59:22
【问题描述】:

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

这是我的代码:

$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

【问题讨论】:

  • dirs 是私有财产,您如何访问它?您能否发布转储结果的代码?

标签: php symfony filesystems php-5.6


【解决方案1】:

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

使用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);
}

此代码返回:

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 属性时,我得到:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2019-09-25
    • 2013-11-28
    • 2012-06-04
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多