假设我有一个特定的文件系统,它有一个多重删除方法,可以在一个请求中删除一堆文件。但是,存储外观将迭代路径并逐个删除它们。有没有办法在文件系统适配器中添加一个新方法,例如deleteMultipleFiles
,可以在不更改 laravel 框架代码的情况下调用?
更新: 我正在尝试从云存储中删除数百万个文件,但默认的删除 API 只会删除一个请求中的一个文件,所以我需要一种新的方法来执行此操作。默认云盘包使用的是没有宏方法扩展的LeagueFlysystemFilesystem;
。
更新:
以下是我如何实现这一目标:
将新方法放在磁盘的适配器.php中,并使用此Storage::disk('xxx')->getAdapter()->newMethod()
调用它
您可以将宏添加到某些 Illuminate 类(如文件系统)。只需将它们添加到AppServiceProvider
的boot
方法中即可。请注意,您可以根据需要调整参数(在这种情况下$args
和$ifAny
),
use IlluminateFilesystemFilesystem;
class AppServiceProvider
{
public function boot()
{
Filesystem::macro('deleteMultipleFiles', function ($args, $ifAny) {
// Do what you need to do.
});
}
}
然后,像这样使用它。
File::deleteMultipleFiles($args, $ifAny);