【问题标题】:Laravel facade and tight coupled controllersLaravel 外观和紧耦合控制器
【发布时间】:2013-04-03 16:58:05
【问题描述】:

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

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

所以我读到了这篇非常好的文章:http://www.nathandavison.com/posts/view/16/using-dependency-injection-and-ioc-in-laravel-4-controllers

简而言之,它建议在您的控制器中使用依赖注入 (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;
});

这确实有道理,但它不是框架的哲学,因为它绕过了外观......我想听听关于这种方法的意见。这种做法好不好?

【问题讨论】:

    标签: laravel facade tightly-coupled-code


    【解决方案1】:

    我认为您和我刚刚回答的问题的另一个人一直在学习相同的教程。不要重复我自己,请参阅my answer to his question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2018-11-19
      • 2013-12-25
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多