Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Commit 8114f8b

Browse files
committed
Server request can be created with all possible params
1 parent 68c015a commit 8114f8b

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

src/ServerRequest.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,22 @@ public function __construct(
7777
$uri = null,
7878
$method = null,
7979
$body = 'php://input',
80-
array $headers = []
80+
array $headers = [],
81+
array $cookies = [],
82+
array $queryParams = [],
83+
$parsedBody = null,
84+
$protocol = '1.1'
8185
) {
8286
$this->validateUploadedFiles($uploadedFiles);
8387

8488
$body = $this->getStream($body);
8589
$this->initialize($uri, $method, $body, $headers);
8690
$this->serverParams = $serverParams;
8791
$this->uploadedFiles = $uploadedFiles;
92+
$this->cookieParams = $cookies;
93+
$this->queryParams = $queryParams;
94+
$this->parsedBody = $parsedBody;
95+
$this->protocol = $protocol;
8896
}
8997

9098
/**

src/ServerRequestFactory.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,18 @@ public static function fromGlobals(
6060
$server = static::normalizeServer($server ?: $_SERVER);
6161
$files = static::normalizeFiles($files ?: $_FILES);
6262
$headers = static::marshalHeaders($server);
63-
$request = new ServerRequest(
63+
64+
return new ServerRequest(
6465
$server,
6566
$files,
6667
static::marshalUriFromServer($server, $headers),
6768
static::get('REQUEST_METHOD', $server, 'GET'),
6869
'php://input',
69-
$headers
70+
$headers,
71+
$cookies ?: $_COOKIE,
72+
$query ?: $_GET,
73+
$body ?: $_POST
7074
);
71-
72-
return $request
73-
->withCookieParams($cookies ?: $_COOKIE)
74-
->withQueryParams($query ?: $_GET)
75-
->withParsedBody($body ?: $_POST);
7675
}
7776

7877
/**

test/ServerRequestTest.php

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,22 +135,38 @@ public function testUsesProvidedConstructorArguments($parameterMethod, $methodRe
135135
$headers = [
136136
'host' => ['example.com'],
137137
];
138+
$cookies = [
139+
'boo' => 'foo',
140+
];
141+
$queryParams = [
142+
'bar' => 'bat',
143+
];
144+
$parsedBody = 'bazbar';
145+
$protocol = '1.2';
138146

139147
$request = new ServerRequest(
140148
$server,
141149
$files,
142150
$uri,
143151
$parameterMethod,
144152
'php://memory',
145-
$headers
153+
$headers,
154+
$cookies,
155+
$queryParams,
156+
$parsedBody,
157+
$protocol
146158
);
147159

148-
$this->assertEquals($server, $request->getServerParams());
149-
$this->assertEquals($files, $request->getUploadedFiles());
160+
$this->assertSame($server, $request->getServerParams());
161+
$this->assertSame($files, $request->getUploadedFiles());
150162

151163
$this->assertSame($uri, $request->getUri());
152-
$this->assertEquals($methodReturned, $request->getMethod());
153-
$this->assertEquals($headers, $request->getHeaders());
164+
$this->assertSame($methodReturned, $request->getMethod());
165+
$this->assertSame($headers, $request->getHeaders());
166+
$this->assertSame($cookies, $request->getCookieParams());
167+
$this->assertSame($queryParams, $request->getQueryParams());
168+
$this->assertSame($parsedBody, $request->getParsedBody());
169+
$this->assertSame($protocol, $request->getProtocolVersion());
154170

155171
$body = $request->getBody();
156172
$r = new ReflectionProperty($body, 'stream');

0 commit comments

Comments
 (0)