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