Laravel Request input() or get()

2022-08-30 10:18:44

在 Laravel 5 中,Request 对象的方法注入似乎比使用 Request 外观更可取。

<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index(Request $request)
    {
        $email = $request->input('email');

        // OR

        $email = $request->get('email');
    }
}

我有几个问题:

使用比使用更好Illuminate\Http\RequestIlluminate\Support\Facades\Request

我不知道$request->get()是如何解析的,因为..中没有函数名。input() 和 get() 做同样的事情。get()Illuminate\Http\Request

方法注入是否比使用立面更好?


答案 1

注塑与立面

在控制器方法中,请求注入功能始终是首选,因为在某些方法中,它可以帮助您使用表单请求(它们正在扩展默认的请求类)验证,这将在进入实际控制器方法之前自动验证您的请求。这是一个很棒的功能,有助于创建纤薄而干净的控制器代码。

使用默认的请求注入使控制器的方法相似且更易于维护。

此外,对象注入总是比立面更好,因为这样的方法和对象更容易测试。

获取与输入

get(...)并且是不同类的方法:input(...)

  • 第一个是Symfony HttpFoundation Request的方法,
  • input()是 Laravel Request 类的一个方法,它正在扩展 Symfony Request 类,它支持点表示法来访问嵌套数据(如 )。$name = $request->input('products.0.name')

答案 2

推荐