Подтвердить что ты не робот

Входной фасад Laravel vs Request Facade

Основываясь на API входного фасада и Request Facade API, метод Input:: get() кажется быть единственной разницей. Я что-то пропустил?

Я знаю, что валидация может применяться к запросам, но я не уверен, что то же самое верно для входного фасада.

4b9b3361

Ответ 1

Да, оба фасада очень похожи. Причина этого в том, что базовый класс тот же (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. Противоположность применяется для инъекций зависимостей.