[英]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.