gpt4 book ai didi

php - 避免在 Controller 上使用 Laravel facade

转载 作者:可可西里 更新时间:2023-10-31 22:50:41 26 4
gpt4 key购买 nike

我正在使用 Laravel 5.5 并尝试通过 psr-2 standard 来习惯编码(刚开始学习)。我用 Quafoo QA 分析我所有的代码并逐步修复错误并记录下来。

通过使用外观,我得到了这个错误“避免使用对类的静态访问”。因此,我尽量避免使用它们。
在我的 Controller 上我有这段代码:

<?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和Storage这是正确的方法吗,还有其他方法吗?

最佳答案

您无需避免使用Facades - 它们是框架的关键部分。但是如果你愿意,你可以使用依赖注入(inject)将你需要的类作为参数包含在 Controller 方法中:

class LoadDataController extends Controller
{

public function index(ViewFactory $viewFactory)
{
return $viewfactory->make('LoadData/index');
}

//more code
}

或者如果您在所有 Controller 方法中都需要它:

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 中使用的标准模式。

关于php - 避免在 Controller 上使用 Laravel facade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49138428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com