2015-05-12 2 views
23

С Laravel 5 кажется, что метод инъекции для объекта Request предпочтительнее использования фасада запроса.Laravel Request input() или get()

<?php namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

class HomeController extends Controller 
{ 
    public function index(Request $request) 
    { 
     $email = $request->input('email'); 

     // OR 

     $email = $request->get('email'); 
    } 
} 

Несколько вопросов у меня есть:

Пользуется Illuminate\Http\Request лучше, чем при использовании Illuminate\Support\Facades\Request

Я понятия не имею, как $ request-> Get() является разрешающим, как нет имени функции get() в Illuminate\Http\Request. input() и get() делает то же самое.

Способ инъекции лучше, чем использование фасадов?

ответ

24

В методе контроллера Запрос функции впрыска всегда предпочтительнее, поскольку в некоторых методах он может помочь вам использовать проверку формы (они расширяют класс запроса по умолчанию), которая будет автоматически проверять ваш запрос непосредственно перед вводом в фактический метод контроллера , Это потрясающая функция, которая помогает создавать тонкий и чистый код контроллера.

Использование ввода запроса по умолчанию делает методы вашего контроллера похожими и более простыми в обслуживании.

Также объект инъекции всегда лучше, чем фасады, потому что такие методы & объектов легче проверить.

get() и input() - это методы разных классов. Первый - метод запроса Symphony HttpFoundation, input() - это метод класса Laravel Request, расширяющий класс Symphony Request.

+0

благодарит за ответ. – Yada

+2

Хороший ответ. Я лично предпочитаю 'input()', и я считаю, что это официально предпочтительнее 'get()'. Мне это особенно нравится, потому что это позволяет избежать путаницы с входными данными 'GET' и' POST'. (это была большая проблема в более ранних версиях, где у вас был 'Input :: get()') – lukasgeiter

+0

':: get()' наверняка запутан, потому что он проверяет как GET, так и POST-файлы. Как указал Макс, использование класса 'Request' позволяет очень быстро поменять его на свой собственный объект запроса, например запрос проверки. – dotty