使用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更好吗?
答案 0 :(得分:34)
在控制器方法中,请求注入功能总是更可取,因为在某些方法中,它可以帮助您使用表单请求(它们正在扩展默认的Request类)验证,这将在进入实际控制器方法之前自动验证您的请求。这是一个很棒的功能,有助于创建纤薄和干净的控制器代码。
使用默认的请求注入使您的控制器方法类似且更易于维护。
此外,对象注入总是比Facades更好,因为这样的方法&amp;对象更容易测试。
Class.forName()
和get()
是不同类的方法。第一个是Symfony HttpFoundation Request的方法,input()
是Laravel Request类的一个方法,它扩展了Symfony Request类。