使用symfony finder在phar中查找文件

时间:2017-08-30 13:31:14

标签: php symfony phar

我有以下代码在源树中名为robofile-templates的目录中查找文件。 现在我将应用程序打包成一个phar文件。

我可以使用类似的代码迭代phar文件中包含的文件,还是必须重写它?

protected function getTemplateRoboFiles() {
    $base = dirname( __DIR__ );

    $templates = [];

    $finder = new Finder();
    $finder->directories()->in( $base )->name( 'robofile-templates' );
    foreach ( $finder as $directory ) {
        $fileFinder = new Finder();
        $fileFinder->files()->in( $directory->getRealPath() )->name( '*.php' );
        foreach ( $fileFinder as $file ) {
            $templates[ $file->getBasename( '.php' ) ] = $file->getRealPath();
        }
    }

    return $templates;
}

编辑:有趣的是,opendir / readdir在PHAR中工作。我可以使用那些基本的文件函数,但我认为Symfony文件查找器是基于相同的基本命令构建的?

1 个答案:

答案 0 :(得分:0)

Symfony finder按预期工作,也在phars中查找文件。

我的问题出现在流程的另一部分:我正在使用composer install构建phar,而我的composer.lock不符合数据。正如我试图在档案中找到的文件,是在作曲家模块中,它实际上并没有包含在phar中。

所以谁在绊倒这个:更好地检查你的文件是否真的打包到了phar。