【发布时间】:2015-08-13 21:09:15
【问题描述】:
我对所有这些东西都很陌生。我的意思是我了解 OOP 是如何工作的,但不是真的。我想每个新手开发人员都曾在某个时候出现在我的位置。所以我一直在浏览 Jeffrey 的很棒的 Laracasts 来了解这些东西是如何工作的。
所以我刚刚完成了关于接口的课程,他解释了“始终使用接口,从不使用实现”,这对我来说很有意义,但我对最后一个示例有疑问:
他解释了 CanBeFiltered 接口是如何有用的,我知道如果我将此接口传递给控制器的构造函数,Laravel 将在幕后解析我选择的特定过滤器并将其注入,然后我将能够使用它。或者我可以像这样手动完成:
<?php
class UserController{
protected $canBeFiltered;
public function __construct(CanBeFiltered $canBeFiltered)
{
$this->canBeFiltered = $canBeFiltered;
}
public function show()
{
return $this->canBeFiltered->filter();
}
}
$controller = new UserController(new Favorited);
这基本上会应用favorited 过滤器,但是如果我想应用多个过滤器,比如我想应用favorited 和unwatched,该怎么办?那我该怎么办?
而且,Laravel 的 IoC 容器会自动为我解决依赖关系,那么如何将不同的过滤器传递给不同的控制器呢?
【问题讨论】:
-
使用
when()->needs()->give()。见here。