Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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 通过对象在Laravel中使用存储外观_Php_Laravel_Ftp - Fatal编程技术网

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一次发送一个文件?或者使用