Основываясь на API входного фасада и Request Facade API, метод Input:: get() кажется быть единственной разницей. Я что-то пропустил?
Я знаю, что валидация может применяться к запросам, но я не уверен, что то же самое верно для входного фасада.
Основываясь на API входного фасада и Request Facade API, метод Input:: get() кажется быть единственной разницей. Я что-то пропустил?
Я знаю, что валидация может применяться к запросам, но я не уверен, что то же самое верно для входного фасада.
Да, оба фасада очень похожи. Причина этого в том, что базовый класс тот же (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
. Input
нигде не упоминается в документации для 5.0. Это не (официально) устарело, но рекомендуется использовать Request
.
То, что мне также очень нравится в Request
, заключается в том, что у Фасада есть имя базового класса. Таким образом, выясняется, с чем вы имеете дело. Однако это также может быть причиной ошибок. Если вы используете что-то вроде Request::input('name')
, обязательно импортируйте Facade с помощью use Request;
или use Illuminate\Support\Facades\Request
и не use Illuminate\Http\Request
. Противоположность применяется для инъекций зависимостей.