[英]Avoid Laravel facade on controller
我正在使用Laravel 5.5
并尝试习惯按Laravel 5.5
-2标准编写代码(刚刚开始学习)。 我用Quafoo QA分析我的所有代码并逐步修复错误并记录它们。
通过使用外观我得到这个错误"Avoid using static access to class"
。 因为它我试图避免使用它们。
在我的控制器上我有这个代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Events\FileLoaded;
use Illuminate\Support\Facades\Input;
use Illuminate\Auth\Middleware\Authenticate;
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
use \Illuminate\Contracts\View\Factory as ViewFactory;
class LoadDataController extends Controller
{
public function index()
{
$viewfactory = app(ViewFactory::class);
return $viewfactory->make('LoadData/index');
}
//more code
}
除了View Facade
我还使用DB, Input, Validator and Storage
这是正确的方法,还有其他吗?
您不需要避免使用Facades
- 它们是框架的关键部分。 但是如果你愿意,你可以使用依赖注入来包含你需要的类作为控制器方法中的参数:
class LoadDataController extends Controller
{
public function index(ViewFactory $viewFactory)
{
return $viewfactory->make('LoadData/index');
}
//more code
}
或者如果您在所有控制器方法中都需要它:
class LoadDataController extends Controller
{
private $viewFactory;
public function __construct(ViewFactory $viewFactory)
{
$this->viewFactory = $viewFactory;
}
public function index()
{
return $this->viewFactory->make('LoadData/index');
}
//more code
}
当然,这实际上并没有改变你编写的代码的功能,它只是重新排列它。 我不会把你提到的代码分析器的话当作你做错的事。 这些是在Laravel中使用的标准模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.