23

基于Input Facade APIRequest Facade API,Input::get() 方法似乎是唯一的区别。我在这里错过了什么吗?

我知道验证可以应用于请求,但我不确定输入门面是否也是如此。

4

1 回答 1

31

是的,两个门面都非常相似。这样做的原因是基础类是相同的(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()方法。这只是Request::input()直接在 Facade 中“翻译”为:

public static function get($key = null, $default = null)
{
    return static::$app['request']->input($key, $default);
}

结论

它们本质上是相同的。这意味着,无需更改现有代码。但是,如果您愿意,它不会有任何区别。

编写新代码时,您应该使用Request. Input5.0 的文档中没有提到任何地方。它没有(官方)弃用,但Request鼓励使用。

我还真正喜欢Request的是 Facade 实际上具有底层类的名称。这样就很清楚你在处理什么。然而,这也可能是错误的根源。如果您使用类似的东西,请Request::input('name')确保使用use Request;oruse Illuminate\Support\Facades\Requestnot use Illuminate\Http\Request导入 Facade 。相反的情况适用于依赖注入。

于 2015-04-30T07:18:01.397 回答