/** * Erstellt einen Request aus den Umgebungsvariablen * * wird eine Umgebungsvariable mit NULL übergeben (oder ausgelassen), wird die global Umgebungsvariable genommen * infer() ist also äquivalent mit: * infer($_GET, $_POST, $_COOKIE, $_SERVER) * * ist $_GET['mod_rewrite_request'] gesetzt wird dies als resource genommen */ public static function infer($GET = NULL, $POST = NULL, $COOKIE = NULL, $SERVER = NULL) { $merged = array(); $merged['GET'] = $GET !== NULL ? $GET : $_GET; $merged['POST'] = $POST !== NULL ? $POST : $_POST; $merged['COOKIE'] = $COOKIE !== NULL ? $COOKIE : $_COOKIE; $merged['SERVER'] = $SERVER !== NULL ? $SERVER : $_SERVER; $input = new \Psc\Form\DataInput($merged); $method = NULL; switch ($input->get(array('SERVER', 'REQUEST_METHOD'))) { case 'POST': $method = Request::POST; break; case 'PUT': $method = Request::PUT; break; case 'DELETE': $method = Request::DELETE; break; case 'GET': default: $method = Request::GET; break; } /* wir haben mit mod-rewrite $_GET['mod_rewrite_request'] gesetzt oder es übergeben */ if (($rewriteResource = $input->get('GET.mod_rewrite_request', NULL)) != '') { $request = new Request($method, $rewriteResource); } elseif (isset($_SERVER['REQUEST_URI'])) { $request = new Request($method, $_SERVER['REQUEST_URI']); } else { throw new Exception('Konnte keine vernünftige Resource inferren. (kann nur GET[mod_rewrite_request]'); } if ($request->getMethod() === REQUEST::POST) { $request->setBody($input->get(array('POST'), array())); } if ($request->getMethod() === REQUEST::PUT) { throw new Exception('Keine Ahnung, wie ich hier an den Body komme'); } return $request; }
/** * @expectedException \InvalidArgumentException */ public function testPart0Exception() { $request = new Request(Request::GET, '/episodes/8/status'); $request->getPart(0); }