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

时间:2015-05-21 19:25:08

标签: php 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结束。

感谢。

1 个答案:

答案 0 :(得分:2)

Finder组件的目的是提供一种简单的方法来遍历磁盘上的文件和目录。它不能仅与一个文件一起使用,并且如果该文件的路径未知。

为了获取PHP文件所在的目录,您可以使用__DIR__。例如,如果您的代码位于捆绑包的Controller目录中

echo __DIR__.'/../Resources/config/myFile.xml';

如果要遍历config目录中的所有XML文件,可以使用Finder。

$finder->files()->name('*.xml')->in(__DIR__.'/../Resources/config');