我正在尝试遵循这里的小教程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
。
谢谢。
Finder组件的目的是提供一种简单的方法来遍历磁盘上的文件和目录。它不打算只与一个文件一起使用,如果该文件的路径未知。
为了获取PHP文件所在的目录,您可以使用__DIR__
。例如,如果您的代码位于捆绑包的Controller
目录中
echo __DIR__.'/../Resources/config/myFile.xml';
如果您想遍历config目录中的所有XML文件,可以使用Finder。
$finder->files()->name('*.xml')->in(__DIR__.'/../Resources/config');