基于Input Facade API和Request Facade API,Input :: get()方法似乎是唯一的区别。我在这里错过了什么吗?
我知道验证可以应用于请求,但我不确定输入外观是否也是如此。
答案 0 :(得分:26)
是的,两个外墙非常相似。原因是底层类是相同的(Illuminate\Http\Request
)。您可以通过查看Facade类及其访问器来看到这一点:
Illuminate\Support\Facades\Input
protected static function getFacadeAccessor()
{
return 'request';
}
Illuminate\Support\Facades\Request
protected static function getFacadeAccessor()
{
return 'request';
}
正如您所意识到的,一个区别是Input::get()
方法。这只是"翻译"直接在Facade中Request::input()
:
public static function get($key = null, $default = null)
{
return static::$app['request']->input($key, $default);
}
它们基本相同。这意味着,无需更改现有代码。但是,如果你想这样做,那就没有任何区别。
编写新代码时,您应该使用Request
。 5.0的文档中没有提到Input
。它没有(正式)弃用,但鼓励使用Request
。
我对Request
的真正喜欢之处在于Facade实际上具有底层类的名称。通过这种方式,您可以清楚自己所处理的内容。然而,这也可能是错误的根源。如果您使用Request::input('name')
之类的内容,请确保使用use Request;
或use Illuminate\Support\Facades\Request
以及不 use Illuminate\Http\Request
导入Facade。相反的情况适用于依赖注入。