На основе API ввода фасадов а также 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()
прямо на фасаде:
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
а также не use Illuminate\Http\Request
, Противоположность применяется для внедрения зависимости.
Других решений пока нет …