我正在尝试遵循这里的小教程http://symfony.com/doc/current/components/finder.html,但我完全迷失了如何实际找到文件。我想我有两个问题需要解决。
1)Symfony从控制器中确定/path/to/src
的好方法是什么?
2)如何使用Finder获取所需文件的绝对路径?
在1的部分答案中,我知道$this->get('kernel')->getRootDir()
但是指向/path/to/app
,我想我可以添加../src
到最后但是我想要一点点清洁剂。
我更喜欢浏览子目录,而不是只指定要查看的单个文件夹。
这是我尝试过的事情
/* In this case the actual file exists in src/MyBundle/config/myFile.xml */
$finder = new Finder();
$finder->files()->name('myFile.xml')->in('/path/to/src');
或者我也做过。
$finder->files()->name('myFile.xml')->in('/path/to/src/MyBundle/config');
如果目录不存在,Finder会抛出错误。所以我知道我的路径字符串没有错误。但是,当我尝试foreach($finder as $file)
完成结果或$finder->getIterator()
时,我每次都会以NULL
结束。
感谢。
答案 0 :(得分:2)
Finder组件的目的是提供一种简单的方法来遍历磁盘上的文件和目录。它不能仅与一个文件一起使用,并且如果该文件的路径未知。
为了获取PHP文件所在的目录,您可以使用__DIR__
。例如,如果您的代码位于捆绑包的Controller
目录中
echo __DIR__.'/../Resources/config/myFile.xml';
如果要遍历config目录中的所有XML文件,可以使用Finder。
$finder->files()->name('*.xml')->in(__DIR__.'/../Resources/config');