2015-05-12 13 views
23

W przypadku Laravel 5 wygląda na to, że wstrzyknięcie metody dla obiektu Request jest lepsze niż użycie elewacji Request.Laravel Żądanie wejścia() lub 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'); 
    } 
} 

Kilka pytań mam:

Czy korzystanie Illuminate\Http\Request lepsza niż Illuminate\Support\Facades\Request

nie mam pojęcia, jak $ request-> get() jest rozwiązanie, ponieważ nie ma w nazwa funkcji get()Illuminate\Http\Request. input() i get() robią to samo.

Czy metoda iniekcji jest lepsza niż przy użyciu fasad?

Odpowiedz

24

W metodzie sterownika Żądanie funkcji wstrzykiwania jest zawsze preferowane, ponieważ w niektórych metodach może pomóc w korzystaniu z Żądań formularzy (rozszerzają domyślną klasę Żądania), które automatycznie potwierdzą Twoją prośbę tuż przed wejściem do rzeczywistej metody kontrolera . Jest to niesamowita funkcja, która pomaga tworzyć cienki i czysty kod kontrolera.

Używanie domyślnego wtrysku zapotrzebowania sprawia, że ​​metody kontrolera są podobne i łatwiejsze w utrzymaniu.

Także iniekcja obiektu jest zawsze lepsza niż fasad, ponieważ takie metody są łatwiejsze do przetestowania.

get() i input() są metodami różnych klas. Pierwszą z nich jest metoda żądania HttpFoundation Symphony, input() to metoda klasy Laravel Request, która rozszerza klasę żądań symfonii.

+0

dzięki za odpowiedź. – Yada

+2

Dobra odpowiedź. Osobiście preferuję 'input()' i uważam, że oficjalnie preferowane jest 'get()'. Szczególnie podoba mi się to, ponieważ pozwala uniknąć pomyłki z danymi wejściowymi 'GET' i' POST'. (był to duży problem we wcześniejszych wersjach, w których miałeś 'Input :: get()') – lukasgeiter

+0

':: get()' na pewno jest mylące, ponieważ sprawdza zarówno vary GET, jak i POST. Jak wskazał max, użycie klasy 'Request' pozwala bardzo szybko zamienić ją na własny obiekt Request, taki jak żądanie weryfikacji. – dotty