Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在StorageFacade中利用文件系统类的glob方法?_Php_Laravel_Dependency Injection_Laravel 5_Flysystem - Fatal编程技术网

Php 如何在StorageFacade中利用文件系统类的glob方法?

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,但您可以获取所

这与拉威尔5号有关。

我可以在
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()
如果需要递归匹配。正如您所说,这不是最优雅的函数。我宁愿使用本机php
glob()
函数。无论如何,感谢Marcin花时间提出:)我最终构建了一个自定义文件帮助器类,该类不使用Laravel依赖项注入容器,但这将为我完成任务…@Marcin:无论如何,你赢得了赏金。;-)