Laravel输入门面与请求门面

时间:2015-04-30 06:25:46

标签: php laravel-5 laravel-facade

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

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

1 个答案:

答案 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。相反的情况适用于依赖注入。