这个参数属于这个类的说法有什么意义?

Teo*_*gır 1 php oop

当我们发送一个类作为参数时,我们说这个参数属于这个类,如下所示:

// $request is an instance of Request class
public function __construct(Request $request)
{
    $this->request = $request;
}
Run Code Online (Sandbox Code Playgroud)

但我不明白这个目的,这是一个类而不是接口,为什么我们这样做呢?

Scr*_*t47 5

除了其他原因,这是一种类型提示,它迫使开发人员传递该类的实例而不是其他任何东西:

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 - 分别在测试时注释掉.

阅读材料

输入声明

了解依赖注入