Php 如何在StorageFacade中利用文件系统类的glob方法?
这与拉威尔5号有关。 我可以在Php 如何在StorageFacade中利用文件系统类的glob方法?,php,laravel,dependency-injection,laravel-5,flysystem,Php,Laravel,Dependency Injection,Laravel 5,Flysystem,这与拉威尔5号有关。 我可以在illighted\Filesystem\Filesystem中看到一个名为glob($pattern,$flags=0)的方法 不幸的是,此方法没有反映在Laravel 5附带的默认FilesystemAdapter中 这将非常好,因为我需要做一些事情,比如Storage::disk('local')->glob([\u]*[.blade.php])(以获取以下划线开头的所有存储刀片文件 实现这一点最干净的方法是什么?我认为您不能在此处运行glob,但您可以获取所
illighted\Filesystem\Filesystem
中看到一个名为glob($pattern,$flags=0)的方法
不幸的是,此方法没有反映在Laravel 5附带的默认FilesystemAdapter
中
这将非常好,因为我需要做一些事情,比如Storage::disk('local')->glob([\u]*[.blade.php])代码>(以获取以下划线开头的所有存储刀片文件
实现这一点最干净的方法是什么?我认为您不能在此处运行glob
,但您可以获取所有文件,然后对其进行过滤,例如:
$files = array_filter(Storage::disk('local')->files(), function ($file)
{
return preg_match('/_(.*)\.blade\.php$/U', $file);
});
当然,您需要根据您的需要决定使用文件
或所有文件
(递归)。如果您有数千个文件,这可能不是最好的解决方案,但如果您没有,这应该足够了如果不使用文件系统::glob()
?直接使用文件系统::glob()
不允许使用存储及其附带的配置…我想我需要添加一个新的文件驱动程序(或扩展“本地”驱动程序),但这太复杂了…你不能做文件系统->磁盘('local')->glob()
?我认为实现这一点的唯一方法是使用扩展函数扩展filesttemmanager(您可以在laravel API中看到这一点:($this))。Handy是的,但是glob
被排除在接口之外,因为它要么价格昂贵,要么在某些文件系统上无法运行。也就是说,@Marcin Nabiałek可能是最好的方法。也许allFiles()
如果需要递归匹配。正如您所说,这不是最优雅的函数。我宁愿使用本机phpglob()
函数。无论如何,感谢Marcin花时间提出:)我最终构建了一个自定义文件帮助器类,该类不使用Laravel依赖项注入容器,但这将为我完成任务…@Marcin:无论如何,你赢得了赏金。;-)