Laravel文档显示
当然,你也可以type-hint任何Laravel合约。如果容器可以解析,可以type-hint它。
那么type-hint的含义是什么呢?
如果您通过容器创建对象,它将尝试解析由对象的构造函数参数表示的依赖关系。但是,容器需要知道依赖项的类型,这就是为什么你需要对参数进行类型提示,这意味着你需要定义参数的类型,例如:
public function __construct(Hasher $hasher) {
//some logic
}
在上面的例子中,我已经类型暗示了$ hashher参数——我告诉容器它应该传递一个hashher类型的对象。
除了对类名进行类型提示外,还可以对接口进行类型提示。Laravel中的契约是由Laravel的具体类实现的接口。如果你不关心传递什么特定的类,只要它实现给定的接口,这是有用的。
使用契约,上面的例子看起来像这样:
public function __construct(HasherContract $hasher) {
//some logic
}