我是所有这些东西的新手。我的意思是我理解OOP是如何工作的但不是真的。我想每个新手开发者都会在某个时候到我的位置。所以我一直在经历杰弗里令人敬畏的拉拉斯特斯,以了解这些东西是如何运作的。
所以我刚刚完成了关于接口的课程,他解释说“总是使用接口,从不使用实现”并对我有意义,但我对最后一个例子有疑问,如下所示:
他解释了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容器会自动为我解析依赖关系,以便如何将不同的过滤器传递给不同的控制器?
答案 0 :(得分:2)
每个接口可以有不同的实现,因此当您在构造函数中键入提示依赖项时,laravel将要求服务容器查明该接口是否存在任何绑定实现。
它的开发人员必须指定必须使用哪些实现来解析接口依赖关系,而laravel也支持 Contextual Binding ,这意味着你可能有两个使用相同接口的类,但是你希望为每个类注入不同的实现。
有关详细信息,请查看documentation。