如何将新方法添加到默认适配器没有的 laravel 外观



假设我有一个特定的文件系统,它有一个多重删除方法,可以在一个请求中删除一堆文件。但是,存储外观将迭代路径并逐个删除它们。有没有办法在文件系统适配器中添加一个新方法,例如deleteMultipleFiles,可以在不更改 laravel 框架代码的情况下调用?

更新: 我正在尝试从云存储中删除数百万个文件,但默认的删除 API 只会删除一个请求中的一个文件,所以我需要一种新的方法来执行此操作。默认云盘包使用的是没有宏方法扩展的LeagueFlysystemFilesystem;

更新:

以下是我如何实现这一目标:

将新方法放在磁盘的适配器.php中,并使用此Storage::disk('xxx')->getAdapter()->newMethod()调用它

您可以将宏添加到某些 Illuminate 类(如文件系统)。只需将它们添加到AppServiceProviderboot方法中即可。请注意,您可以根据需要调整参数(在这种情况下$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);

最新更新