获取symfony中任何文件的绝对路径


Get the absolute path of any file in symfony

我正在尝试遵循这里的小教程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');