当我们发送一个类作为参数时,我们说这个参数属于这个类,如下所示:
// $request is an instance of Request class
public function __construct(Request $request)
{
$this->request = $request;
}
Run Code Online (Sandbox Code Playgroud)
但我不明白这个目的,这是一个类而不是接口,为什么我们这样做呢?
除了其他原因,这是一种类型提示,它迫使开发人员传递该类的实例而不是其他任何东西:
Class T {
public function test()
{
return 'test';
}
}
class Y {
public function test(T $t)
{
return $t->test();
}
}
(new Y())->test('test'); // type error
(new Y())->test(new T()); // no error
Run Code Online (Sandbox Code Playgroud)
根据文件:
类型声明允许函数在调用时要求参数具有某种类型.如果给定值的类型不正确,则会生成错误:在PHP 5中,这将是可恢复的致命错误,而PHP 7将引发TypeError异常.
要指定类型声明,应在参数名称之前添加类型名称.如果参数的默认值设置为NULL,则可以使声明接受NULL值.
实例
Repl - 分别在测试时注释掉.
阅读材料