Фасад ввода Laravel против фасада запроса

На основе Input Facade API и Request Facade API метод Input::get() кажется единственным отличием. Я что-то упустил здесь?

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


person CrackingTheCode    schedule 30.04.2015    source источник


Ответы (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() прямо в Фасаде:

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. Противоположное относится к внедрению зависимостей.

person lukasgeiter    schedule 30.04.2015
comment
Спасибо. Ваш ответ на мой вопрос также stackoverflow.com/questions/31746675/ - person Yada; 05.08.2015