Laravel请求输入()或get()

时间:2015-05-12 08:57:56

标签: php laravel laravel-5

使用Laravel 5似乎比使用Request facade更喜欢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\Request比使用Illuminate\Support\Facades\Request

更好

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

方法注入比使用Facades更好吗?

1 个答案:

答案 0 :(得分:34)

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

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

此外,对象注入总是比Facades更好,因为这样的方法&amp;对象更容易测试。

Class.forName()get()是不同类的方法。第一个是Symfony HttpFoundation Request的方法,input()是Laravel Request类的一个方法,它扩展了Symfony Request类。