我可以重构控制器中的 "unused" $request 变量吗?

Can I refactor out an "unused" $request variable in a controller?

假设我正在构建一个小型应用程序,其中一小部分负责在提交联系表单时发送电子邮件。我只想在联系表通过一些简单的验证时这样做。

在以下控制器中,ContactRequest $request 参数在方法内部未使用,尽管 Laravel 使用类型提示自动将 ContactRequest 逻辑应用于请求。

是否可以在不在控制器方法中留下未使用的变量的情况下实现相同的目的?


// Route
Route::post( 'contact', 'PageController@submitContactForm' );

// PageController
public function submitContactForm( ContactRequest $request ) {
    sendContactFormEmail();

    return redirect()->back();
}

// ContactRequest
public function authorize() {
    return hasNotSubmittedContactFormRecently();
}

public function rules() {
    return [ 'message' => 'required' ];
}

是的,你可以这样写你的控制器方法:

// PageController
public function submitContactForm() 
{
    app()->make(ContactRequest::class);

    sendContactFormEmail();

    return redirect()->back();
}

效果相同。但是对我来说,还是像以前那样使用它更好。

也可能你以某种方式使用你收到的数据,所以这样使用它可能更合理:

sendContactFormEmail($request);

而不是可能将请求注入 sendContactFormEmail 方法。