Zoals bij Zend heb je een Request Class, alleen wat doet deze precies. Ik weet dat je via de class bij de headers etc kan komen maar hoe komt de Request Class dan aan de headers/method etc. Want Als je bijvoorbeeld kijkt naar die van Zend word hij aangeroepen via Zend\Http\Request::fromString($string).. Maar waar komt $string vandaan, wat bevat die etc. Kan iemand mij proberen uit te leggen waar deze Class goed voor is, hoe je hem gebruikt etc?
Ik neem even aan dat je Zend Framework 2 (denk niet dat je Zend engine bedoelt) bedoelt.

De Request is een service (wat geen goed idee is, maar ach...) (dit weten we door de comment in de frontcontroller). Hij wordt aangemaakt in de container doormiddel van de RequestFactory. Deze maakt in een web omgeving een Zend\Http\PhpEnvironment\Request aan en in een Console omgeving een Zend\Console\Request.

We nemen even aan dat het een web request betreft. In die klasse vinden we een constructor. Deze stelt alle request waarden in en gebruikt daarvoor de superglobals. De Request::fromString method wordt dus niet gebruikt in een normale Zend workflow.

Dan de volgende vraag: waar is ie goed voor? In je klasse mag je nooit gebruik maken van superglobals. Je bent dan namelijk in je method afhankelijk van de context waarin de method wordt uitgevoerd. Voer je die method in een Test context uit, dan werkt ie al niet goed meer. Het is hetzelfde als een globale variabele, dat is ook uit de boze.
In plaats daarvan gebruikt men dus een Request object. Deze bevat alle parameters die je tot je beschikking hebt bij het request. Dit object kun je in je test omgeving stubben en kun je dus volledig goed testen. Ook kun je andere Request objects gebruiken, zoals de Console Request objects. Hierdoor is je method niet meer afhankelijk van zijn context, maar van een object. En dat mag natuurlijk gewoon.
Jaaaa dat bedoel ik nou ;-) Bedankt voor de uitleg Wouter, hier kan ik verder mee. :-)

Reageren