php 依赖注入 参数写法的 困惑?

代码如下

 namespace app\index\controller;

use think\Request;

class Index
{
    protected $request;

    public function __construct(Request $request)
    {
        $this->request = $request;
    }

    public function hello()
    {
        return 'Hello,' . $this->request->param('name') . '!';
    }

}

这是thinkphp5的依赖注入写法,我困惑的地方是 Request $request 按我的理解,函数的参数都是类似$i这种,这里写成 Request $i 这种,如果不是在框架中,程序能认识吗?还是说有很多东西我没理解?还请大佬解惑!

$this->request = $request;
前一个request代表的是作为成员变量的protected $request;
后一个request是函数的参数(Request $request)
两个变量同名,这里是构造函数,将参数放入成员变量,这么写没问题。