web-dev-qa-db-ja.com

Laravel入力ファサードと要求ファサード

Input Facade APIRequest Facade API に基づくと、Input :: get()メソッドが唯一の違いのようです。ここで何かが足りませんか?

検証をリクエストに適用できることは知っていますが、入力ファサードにも同じことが当てはまるかどうかはわかりません。

19
CrackingTheCode

はい、両方のファサードは非常に似ています。これは、基礎となるクラスが同じであるためです(_Illuminate\Http\Request_)。これは、Facadeクラスとそのアクセサーの両方を見るとわかります。

_Illuminate\Support\Facades\Input_

_protected static function getFacadeAccessor()
{
    return 'request';
}
_

_Illuminate\Support\Facades\Request_

_protected static function getFacadeAccessor()
{
    return 'request';
}
_

お気づきのとおり、1つの違いはInput::get()メソッドです。これは、ファサードで直接Request::input()に「変換」されます。

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

結論

それらは本質的に同じです。つまり、既存のコードを変更する必要はありません。しかし、あなたが望むなら、それは何の違いもありません。

新しいコードを書くときは、Requestを使用する必要があります。 Inputは、5.0のドキュメントのどこにも記載されていません。 (公式に)非推奨ではありませんが、Requestの使用をお勧めします。

Requestについて私が本当に気に入っているのは、ファサードが実際には基になるクラスの名前を持っていることです。このようにして、何を扱っているのかが明確になります。ただし、これがエラーの原因になることもあります。 Request::input('name')のようなものを使用する場合は、必ず_use Request;_または_use Illuminate\Support\Facades\Request_およびnot _use Illuminate\Http\Request_を使用してファサードをインポートしてください。依存性注入には逆のことが当てはまります。

26
lukasgeiter