为什么函数声明中的参数名称前面有一个类名?

时间:2016-04-25 00:34:13

标签: php class laravel model-view-controller yii

我在MVC框架中看到了这一点。

Class Hotel{

function add(AddRequest $post){
$this->save($post->all());
}

}

这里" AddRequest"是一个已被继承的类。我不安静得到它的想法。我所知道的是它绑定/验证在函数中使用之前传递给函数的参数。任何人都可以解释这个吗? " AddRequest"如何?正在这个代码中实现?

1 个答案:

答案 0 :(得分:1)

这是type declaration(以前称为类型提示)。该函数将拒绝传递给不属于$post类型的函数的AddRequest

如果您没有自己明确地注入它,那么框架可能正在使用reflection来自动确定并注入所需的依赖项。例如,版本5中的Laravel uses this fairly extensively