2013-03-15 8 views

Odpowiedz

15

Można argumentować, że skoro trzeba wyciągnąć obiekt z kontenera, to wolniejsze podejście, ale zrobiłem oba i różnica jest znikoma. Kiedy potrzebujesz obiektu Request lepiej jest umieścić go jako argument metody kontrolera, ponieważ otrzymasz go natychmiast, a podpowiedź typu PHP zapewni dodatkowe informacje (autouzupełnianie itd.) W przyzwoitych IDE (osobiście polecam PHPStorm). Odnosi się to również do innych argumentów metody kontrolera, otrzymujesz proste zmienne, bez potrzeby ciągnięcia ich dwukrotnie z innych miejsc.

class SthController extends Controller 
    { 
    public function indexAction(Request $request, $arg1, $arg2) 
    { 
    // you have $request object with type hint and all goodness 
    } 
    } 
+0

Thx. A co z przekazywaniem parametrów z kontrolera do szablonu twig - w którym sposobem jest szybsze przekazywanie parametrów z kontrolera, lub pobieranie parametrów w szablonie gałązki przez '{{app.request.get ('name')}}'? – NHG

+0

Jeśli chodzi o wydajność, obowiązują te same zasady ('app.request.get' tłumaczy bezpośrednio na coś takiego jak' $ container-> get ('request') -> get ('name') '). Ale dla stylu kodowania nie powinieneś polegać na zmiennej 'app', ponieważ nie jest ona dostępna we wszystkich sytuacjach (spróbuj eksperymentować z ESI, szablon zawiera i tak, a skończysz w tej samej pozycji co ja miesiące temu) - najlepsza sposobem jest wysłanie wszystkich danych, które są potrzebne do obliczenia przed żądaniem szablonu renderowania. –

-2

Myślę, że powinieneś użyć metody getRequest(), ponieważ jest bardziej dynamiczna!

+0

'getRequest()' jest skrótem dla '$ this-> container-> get ('request')', ale pobranie obiektu Request z parametrów akcji jest metodą DI, która prawdopodobnie powinna być preferowana. W rzeczywistości nie ma metody "getRequest()", jeśli używasz kontrolera jako usługi. –

Powiązane problemy