Php 通过对象在Laravel中使用存储外观
我正在做一个项目,在这个项目中,用户必须将几个图像(通过单个表单字段)上传到服务器。使用Php 通过对象在Laravel中使用存储外观,php,laravel,ftp,Php,Laravel,Ftp,我正在做一个项目,在这个项目中,用户必须将几个图像(通过单个表单字段)上传到服务器。使用foreach,我使用ftp存储图像。这是我的密码: use Storage; $image_list = $request->file('images'); foreach($image_list as $image){ $filename = Cuid::slug().'.'.$image->getClientOriginalExtension(); $path = "images/t
foreach
,我使用ftp存储图像。这是我的密码:
use Storage;
$image_list = $request->file('images');
foreach($image_list as $image){
$filename = Cuid::slug().'.'.$image->getClientOriginalExtension();
$path = "images/templates/";
Storage::disk('ftp')->put($path.$filename, 'Contents');
}
这段代码实际上工作得很好,但我担心像这样直接使用storage facade会为每个循环创建多个实例,并且不再是优化的代码。我尝试为storage facade创建一个对象,如下所示:
$storage = new Storage;
foreach($image_list as $image){
...
$storage->disk('ftp')->put($path.$filename, 'Contents');
}
但这给了我一个错误的说法:
调用未定义的方法illumb\Support\Facades\Storage::disk()
有没有办法不在每次循环运行时直接调用Storage facade
这段代码实际上工作得很好,但我担心像这样直接使用storage facade会为每个循环创建多个实例,并且不再是优化的代码
根据我的理解,您担心您所编写的代码没有得到优化,因为您直接使用了外观
Facades不一定每次使用facade时都会创建新对象,而是从容器中解析出来(将其视为黑盒,它会满足您的要求),有时会创建新对象,但大多数情况下,它仍然会提供已经存在的对象
如果你想知道这是怎么回事:谷歌单身汉和备忘录
因此,在这种情况下,您可以使用相同的代码而不用担心。你试图提出的代码仍然是一样的。但我相信您会遇到性能问题,但不是现在
我现在能想到的一件事是修改代码,使您可以尝试一次保存/放置多个文件,而不是通过FTP一次发送一个文件?或者使用