createServerRequest uses the super-global variable $_SERVER which is generally not recommended.
Instead of super-globals, we recommend to explicitly inject the dependencies
of your class. This makes your code less dependent on global state and it
becomes generally more testable:
// BadclassRouter{publicfunctiongenerate($path){return$_SERVER['HOST'].$path;}}// BetterclassRouter{private$host;publicfunction__construct($host){$this->host=$host;}publicfunctiongenerate($path){return$this->host.$path;}}classController{publicfunctionmyAction(Request$request){// Instead of$page=isset($_GET['page'])?intval($_GET['page']):1;// Better (assuming you use the Symfony2 request)$page=$request->query->get('page',1);}}
Loading history...
19
{
20
if (null === $method && isset($server['REQUEST_METHOD'])) {
21
$method = $server['REQUEST_METHOD'];
22
}
23
if (null === $method) {
24
throw new \InvalidArgumentException('Cannot determine HTTP method');
25
}
26
// TODO: find a MUCH better way
27
if (null === $uri) {
28
$SERVER = $_SERVER;
29
$_SERVER = $server;
30
// Until https://github.com/guzzle/psr7/pull/116 is resolved
31
if (!isset($_SERVER['HTTPS'])) {
32
$_SERVER['HTTPS'] = 'off';
33
}
34
$uri = ServerRequest::getUriFromGlobals();
35
$_SERVER = $SERVER;
36
unset($SERVER);
37
}
38
39
return new ServerRequest($method, $uri, [], null, '1.1', $server);
Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable: