На основе Input Facade API и Request Facade API метод Input::get() кажется единственным отличием. Я что-то упустил здесь?
Я знаю, что проверка может применяться к запросам, но я не уверен, что то же самое верно для входного фасада.
На основе Input Facade 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()
прямо в Фасаде:
public static function get($key = null, $default = null)
{
return static::$app['request']->input($key, $default);
}
Они по сути одинаковы. Это означает, что нет необходимости изменять существующий код. Впрочем, если бы вы захотели, это не имело бы никакого значения.
При написании нового кода вы должны использовать Request
. Input
нигде не упоминается в документации для 5.0. Это (официально) не устарело, но использование Request
поощряется.
Что мне также очень нравится в Request
, так это то, что Facade на самом деле имеет имя базового класса. Таким образом, становится ясно, с чем вы имеете дело. Однако это также может быть корнем ошибок. Если вы используете что-то вроде Request::input('name')
, убедитесь, что фасад импортирован с use Request;
или use Illuminate\Support\Facades\Request
, а не use Illuminate\Http\Request
. Противоположное относится к внедрению зависимостей.