如何访问Finder :: files()结果的第一个文件?

时间:2015-03-27 10:39:11

标签: php symfony

如何使用symfony/finder component获取第一个文件?

我试着这样做:

<?php
// ...
$finder = new Finder();
$finder
    ->files()
    ->in($this->getKernel()->getRootDir().'/../web/uploads/')
    ->name($filename);

    if (!$finder->count()) {
        throw new NotFoundHttpException('Image not found');
    }

    dump(
        $finder->count(), 
        $finder->getIterator()->current(), 
        $finder->getIterator()->valid()
    );

我得到了这个结果:

1
null
false

3 个答案:

答案 0 :(得分:7)

$iterator = $finder->getIterator();
$iterator->rewind();
$firstFile = $iterator->current();

答案 1 :(得分:4)

迭代器的序列是:

  • 倒带
  • 有效
  • 电流/键
  • 有效
  • 电流/键
  • ...

首先尝试倒回或\var_dump(\iterator_to_array($finder));

答案 2 :(得分:1)

单线解决方案。

foreach ($finder as $file) {break;}

print "{$file->getPathname()} is the first file.\n";