webman 控制器方法的第一个参数默认是Request吗

小W

问题描述

  1. 如果方法中只有一个参数,没有指定变量类型。

    public function a($name = null){
     return response($name);
    }

    路由设置:

    Route::get('/a/{name}',[app\controller\Index::class, 'a']);
    或者
    Route::get('/a[/{name}]',[app\controller\Index::class, 'a']);

    在访问这个路径时,没有传递name的情况下,那么最后输出的$name的值不会是null,而是Request类型信息。

  2. 如果方法中只有一个参数,并且指定类型是Request。

    public function a(Request $name){
     return response($name);
    }

    此时的$name就一直是Request类型。

为此你搜索到了哪些方案及不适用的原因

是不是考虑控制器方法第一个参数,在设置了Request指定类型时,再将请求对象注入到action方法第一个参数中。
或者说这样做的好处是??

webman版本1.4

979 1 2
1个回答

walkor

手册有说明,框架默认会将$request注入到action的第一个参数中。
如果你不想注入$request对象,指定参数类型就好了(需要webman-framework>=1.4.7)。

public function a($name = null){
 return response($name);
}

改成

public function a(string $name = null){
 return response($name);
}
  • 小W 2022-10-21

    收到,大佬,着实没看到,我再细看一下哈哈哈

年代过于久远,无法发表回答
🔝