Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Laravel facade和紧耦合控制器_Laravel_Facade_Tightly Coupled Code - Fatal编程技术网

Laravel facade和紧耦合控制器

Laravel facade和紧耦合控制器,laravel,facade,tightly-coupled-code,Laravel,Facade,Tightly Coupled Code,我很难理解如何才能做到最好。我理解facade如何作为语法糖来呈现清晰的静态代码布局风格,同时保持代码松散耦合和可测试性 然而,我有以下问题。只要我有一个控制器,控制器就依赖于类的负载。让我们以输入类为例。 每个控制器都是一个IoC容器,所以实际上这很好。因为如果我想用另一个类更改输入类。我只需要创建一个实现正确接口的新类。然而,这意味着我的应用程序中的每个控制器都依赖于相同的输入类。我理解得对吗 所以我读了这篇非常好的文章: 简而言之,它建议在控制器中使用依赖注入(DI)。例如 class U

我很难理解如何才能做到最好。我理解facade如何作为语法糖来呈现清晰的静态代码布局风格,同时保持代码松散耦合和可测试性

然而,我有以下问题。只要我有一个控制器,控制器就依赖于类的负载。让我们以输入类为例。 每个控制器都是一个IoC容器,所以实际上这很好。因为如果我想用另一个类更改输入类。我只需要创建一个实现正确接口的新类。然而,这意味着我的应用程序中的每个控制器都依赖于相同的输入类。我理解得对吗

所以我读了这篇非常好的文章:

简而言之,它建议在控制器中使用依赖注入(DI)。例如

class UsersController extends BaseController
{
    protected $response;
    protected $request;
    protected $validator;
    protected $hasher;
    protected $user;
    public function __construct(
        Response $response,
        \Illuminate\Http\Request $request,
        \Illuminate\Validation\Factory $validator,
        \Illuminate\Hashing\BcryptHasher $hasher,
        User $user
    ) {
        $this->response = $response;
        $this->request = $request;
        $this->validator = $validator;
        $this->hasher = $hasher;
        $this->user = $user;
    }
    public function getIndex()
    {
        return $this->response->make('Hello World!');
    }
}


这是有道理的,但它不是框架的哲学,因为它绕过了门面。。。我想听听大家对这种方法的看法。这是否是一个好的做法?

我想你和我刚才回答的问题的另一个人都在学习同样的教程。与其重复我自己,不如看看。

我想你和我刚才回答的问题的另一个人一样,也在学习同样的教程。不要重复我自己,请看

$app->bind('UsersController', function($app) {
    $controller = new UsersController(
        new Response,
        $app->make('request'),
        $app->make('validator'),
        $app->make('hash'),
        new User
    );
    return $controller;
});