1

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

但是我有以下问题。每当我有一个控制器时,控制器都依赖于类的负载。让我们以输入类为例。每个控制器都是一个 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;
});

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

4

1 回答 1

1

我认为您一直在遵循与我刚刚回答的另一个人相同的教程。不要重复我自己,请看我对他问题的回答

于 2013-04-06T09:15:21.150 回答