@@ -113,7 +113,7 @@ discard block |
||
113 | 113 | $this->assertFalse($stream->isWritable()); |
114 | 114 | $this->assertFalse($stream->isSeekable()); |
115 | 115 | |
116 | - $throws = function (callable $fn) use ($stream) { |
|
116 | + $throws = function(callable $fn) use ($stream) { |
|
117 | 117 | try { |
118 | 118 | $fn($stream); |
119 | 119 | $this->fail(); |
@@ -121,25 +121,25 @@ discard block |
||
121 | 121 | } |
122 | 122 | }; |
123 | 123 | |
124 | - $throws(function ($stream) { |
|
124 | + $throws(function($stream) { |
|
125 | 125 | $stream->read(10); |
126 | 126 | }); |
127 | - $throws(function ($stream) { |
|
127 | + $throws(function($stream) { |
|
128 | 128 | $stream->write('bar'); |
129 | 129 | }); |
130 | - $throws(function ($stream) { |
|
130 | + $throws(function($stream) { |
|
131 | 131 | $stream->seek(10); |
132 | 132 | }); |
133 | - $throws(function ($stream) { |
|
133 | + $throws(function($stream) { |
|
134 | 134 | $stream->tell(); |
135 | 135 | }); |
136 | - $throws(function ($stream) { |
|
136 | + $throws(function($stream) { |
|
137 | 137 | $stream->eof(); |
138 | 138 | }); |
139 | - $throws(function ($stream) { |
|
139 | + $throws(function($stream) { |
|
140 | 140 | $stream->getSize(); |
141 | 141 | }); |
142 | - $throws(function ($stream) { |
|
142 | + $throws(function($stream) { |
|
143 | 143 | $stream->getContents(); |
144 | 144 | }); |
145 | 145 | $this->assertSame('', (string) $stream); |
@@ -212,61 +212,61 @@ |
||
212 | 212 | public function getResolveTestCases() |
213 | 213 | { |
214 | 214 | return [ |
215 | - [self::RFC3986_BASE, 'g:h', 'g:h'], |
|
216 | - [self::RFC3986_BASE, 'g', 'http://a/b/c/g'], |
|
217 | - [self::RFC3986_BASE, './g', 'http://a/b/c/g'], |
|
218 | - [self::RFC3986_BASE, 'g/', 'http://a/b/c/g/'], |
|
219 | - [self::RFC3986_BASE, '/g', 'http://a/g'], |
|
220 | - [self::RFC3986_BASE, '//g', 'http://g'], |
|
221 | - [self::RFC3986_BASE, '?y', 'http://a/b/c/d;p?y'], |
|
222 | - [self::RFC3986_BASE, 'g?y', 'http://a/b/c/g?y'], |
|
223 | - [self::RFC3986_BASE, '#s', 'http://a/b/c/d;p?q#s'], |
|
224 | - [self::RFC3986_BASE, 'g#s', 'http://a/b/c/g#s'], |
|
225 | - [self::RFC3986_BASE, 'g?y#s', 'http://a/b/c/g?y#s'], |
|
226 | - [self::RFC3986_BASE, ';x', 'http://a/b/c/;x'], |
|
227 | - [self::RFC3986_BASE, 'g;x', 'http://a/b/c/g;x'], |
|
228 | - [self::RFC3986_BASE, 'g;x?y#s', 'http://a/b/c/g;x?y#s'], |
|
229 | - [self::RFC3986_BASE, '', self::RFC3986_BASE], |
|
230 | - [self::RFC3986_BASE, '.', 'http://a/b/c/'], |
|
231 | - [self::RFC3986_BASE, './', 'http://a/b/c/'], |
|
232 | - [self::RFC3986_BASE, '..', 'http://a/b/'], |
|
233 | - [self::RFC3986_BASE, '../', 'http://a/b/'], |
|
234 | - [self::RFC3986_BASE, '../g', 'http://a/b/g'], |
|
235 | - [self::RFC3986_BASE, '../..', 'http://a/'], |
|
236 | - [self::RFC3986_BASE, '../../', 'http://a/'], |
|
237 | - [self::RFC3986_BASE, '../../g', 'http://a/g'], |
|
238 | - [self::RFC3986_BASE, '../../../g', 'http://a/g'], |
|
215 | + [self::RFC3986_BASE, 'g:h', 'g:h'], |
|
216 | + [self::RFC3986_BASE, 'g', 'http://a/b/c/g'], |
|
217 | + [self::RFC3986_BASE, './g', 'http://a/b/c/g'], |
|
218 | + [self::RFC3986_BASE, 'g/', 'http://a/b/c/g/'], |
|
219 | + [self::RFC3986_BASE, '/g', 'http://a/g'], |
|
220 | + [self::RFC3986_BASE, '//g', 'http://g'], |
|
221 | + [self::RFC3986_BASE, '?y', 'http://a/b/c/d;p?y'], |
|
222 | + [self::RFC3986_BASE, 'g?y', 'http://a/b/c/g?y'], |
|
223 | + [self::RFC3986_BASE, '#s', 'http://a/b/c/d;p?q#s'], |
|
224 | + [self::RFC3986_BASE, 'g#s', 'http://a/b/c/g#s'], |
|
225 | + [self::RFC3986_BASE, 'g?y#s', 'http://a/b/c/g?y#s'], |
|
226 | + [self::RFC3986_BASE, ';x', 'http://a/b/c/;x'], |
|
227 | + [self::RFC3986_BASE, 'g;x', 'http://a/b/c/g;x'], |
|
228 | + [self::RFC3986_BASE, 'g;x?y#s', 'http://a/b/c/g;x?y#s'], |
|
229 | + [self::RFC3986_BASE, '', self::RFC3986_BASE], |
|
230 | + [self::RFC3986_BASE, '.', 'http://a/b/c/'], |
|
231 | + [self::RFC3986_BASE, './', 'http://a/b/c/'], |
|
232 | + [self::RFC3986_BASE, '..', 'http://a/b/'], |
|
233 | + [self::RFC3986_BASE, '../', 'http://a/b/'], |
|
234 | + [self::RFC3986_BASE, '../g', 'http://a/b/g'], |
|
235 | + [self::RFC3986_BASE, '../..', 'http://a/'], |
|
236 | + [self::RFC3986_BASE, '../../', 'http://a/'], |
|
237 | + [self::RFC3986_BASE, '../../g', 'http://a/g'], |
|
238 | + [self::RFC3986_BASE, '../../../g', 'http://a/g'], |
|
239 | 239 | [self::RFC3986_BASE, '../../../../g', 'http://a/g'], |
240 | - [self::RFC3986_BASE, '/./g', 'http://a/g'], |
|
241 | - [self::RFC3986_BASE, '/../g', 'http://a/g'], |
|
242 | - [self::RFC3986_BASE, 'g.', 'http://a/b/c/g.'], |
|
243 | - [self::RFC3986_BASE, '.g', 'http://a/b/c/.g'], |
|
244 | - [self::RFC3986_BASE, 'g..', 'http://a/b/c/g..'], |
|
245 | - [self::RFC3986_BASE, '..g', 'http://a/b/c/..g'], |
|
246 | - [self::RFC3986_BASE, './../g', 'http://a/b/g'], |
|
247 | - [self::RFC3986_BASE, 'foo////g', 'http://a/b/c/foo////g'], |
|
248 | - [self::RFC3986_BASE, './g/.', 'http://a/b/c/g/'], |
|
249 | - [self::RFC3986_BASE, 'g/./h', 'http://a/b/c/g/h'], |
|
250 | - [self::RFC3986_BASE, 'g/../h', 'http://a/b/c/h'], |
|
251 | - [self::RFC3986_BASE, 'g;x=1/./y', 'http://a/b/c/g;x=1/y'], |
|
252 | - [self::RFC3986_BASE, 'g;x=1/../y', 'http://a/b/c/y'], |
|
240 | + [self::RFC3986_BASE, '/./g', 'http://a/g'], |
|
241 | + [self::RFC3986_BASE, '/../g', 'http://a/g'], |
|
242 | + [self::RFC3986_BASE, 'g.', 'http://a/b/c/g.'], |
|
243 | + [self::RFC3986_BASE, '.g', 'http://a/b/c/.g'], |
|
244 | + [self::RFC3986_BASE, 'g..', 'http://a/b/c/g..'], |
|
245 | + [self::RFC3986_BASE, '..g', 'http://a/b/c/..g'], |
|
246 | + [self::RFC3986_BASE, './../g', 'http://a/b/g'], |
|
247 | + [self::RFC3986_BASE, 'foo////g', 'http://a/b/c/foo////g'], |
|
248 | + [self::RFC3986_BASE, './g/.', 'http://a/b/c/g/'], |
|
249 | + [self::RFC3986_BASE, 'g/./h', 'http://a/b/c/g/h'], |
|
250 | + [self::RFC3986_BASE, 'g/../h', 'http://a/b/c/h'], |
|
251 | + [self::RFC3986_BASE, 'g;x=1/./y', 'http://a/b/c/g;x=1/y'], |
|
252 | + [self::RFC3986_BASE, 'g;x=1/../y', 'http://a/b/c/y'], |
|
253 | 253 | // dot-segments in the query or fragment |
254 | - [self::RFC3986_BASE, 'g?y/./x', 'http://a/b/c/g?y/./x'], |
|
255 | - [self::RFC3986_BASE, 'g?y/../x', 'http://a/b/c/g?y/../x'], |
|
256 | - [self::RFC3986_BASE, 'g#s/./x', 'http://a/b/c/g#s/./x'], |
|
257 | - [self::RFC3986_BASE, 'g#s/../x', 'http://a/b/c/g#s/../x'], |
|
258 | - [self::RFC3986_BASE, 'g#s/../x', 'http://a/b/c/g#s/../x'], |
|
259 | - [self::RFC3986_BASE, '?y#s', 'http://a/b/c/d;p?y#s'], |
|
260 | - ['http://a/b/c/d;p?q#s', '?y', 'http://a/b/c/d;p?y'], |
|
261 | - ['http://u@a/b/c/d;p?q', '.', 'http://u@a/b/c/'], |
|
262 | - ['http://u:p@a/b/c/d;p?q', '.', 'http://u:p@a/b/c/'], |
|
263 | - ['http://a/b/c/d/', 'e', 'http://a/b/c/d/e'], |
|
264 | - ['urn:no-slash', 'e', 'urn:e'], |
|
254 | + [self::RFC3986_BASE, 'g?y/./x', 'http://a/b/c/g?y/./x'], |
|
255 | + [self::RFC3986_BASE, 'g?y/../x', 'http://a/b/c/g?y/../x'], |
|
256 | + [self::RFC3986_BASE, 'g#s/./x', 'http://a/b/c/g#s/./x'], |
|
257 | + [self::RFC3986_BASE, 'g#s/../x', 'http://a/b/c/g#s/../x'], |
|
258 | + [self::RFC3986_BASE, 'g#s/../x', 'http://a/b/c/g#s/../x'], |
|
259 | + [self::RFC3986_BASE, '?y#s', 'http://a/b/c/d;p?y#s'], |
|
260 | + ['http://a/b/c/d;p?q#s', '?y', 'http://a/b/c/d;p?y'], |
|
261 | + ['http://u@a/b/c/d;p?q', '.', 'http://u@a/b/c/'], |
|
262 | + ['http://u:p@a/b/c/d;p?q', '.', 'http://u:p@a/b/c/'], |
|
263 | + ['http://a/b/c/d/', 'e', 'http://a/b/c/d/e'], |
|
264 | + ['urn:no-slash', 'e', 'urn:e'], |
|
265 | 265 | // falsey relative parts |
266 | - [self::RFC3986_BASE, '//0', 'http://0'], |
|
267 | - [self::RFC3986_BASE, '0', 'http://a/b/c/0'], |
|
268 | - [self::RFC3986_BASE, '?0', 'http://a/b/c/d;p?0'], |
|
269 | - [self::RFC3986_BASE, '#0', 'http://a/b/c/d;p?q#0'], |
|
266 | + [self::RFC3986_BASE, '//0', 'http://0'], |
|
267 | + [self::RFC3986_BASE, '0', 'http://a/b/c/0'], |
|
268 | + [self::RFC3986_BASE, '?0', 'http://a/b/c/d;p?0'], |
|
269 | + [self::RFC3986_BASE, '#0', 'http://a/b/c/d;p?q#0'], |
|
270 | 270 | ]; |
271 | 271 | } |
272 | 272 |
@@ -40,6 +40,9 @@ |
||
40 | 40 | return $target; |
41 | 41 | } |
42 | 42 | |
43 | + /** |
|
44 | + * @param string $requestTarget |
|
45 | + */ |
|
43 | 46 | public function withRequestTarget($requestTarget): self |
44 | 47 | { |
45 | 48 | if (\preg_match('#\s#', $requestTarget)) { |
@@ -34,7 +34,7 @@ discard block |
||
34 | 34 | $target = '/'; |
35 | 35 | } |
36 | 36 | if ('' !== $this->uri->getQuery()) { |
37 | - $target .= '?' . $this->uri->getQuery(); |
|
37 | + $target .= '?'.$this->uri->getQuery(); |
|
38 | 38 | } |
39 | 39 | |
40 | 40 | return $target; |
@@ -97,7 +97,7 @@ discard block |
||
97 | 97 | } |
98 | 98 | |
99 | 99 | if (null !== ($port = $this->uri->getPort())) { |
100 | - $host .= ':' . $port; |
|
100 | + $host .= ':'.$port; |
|
101 | 101 | } |
102 | 102 | |
103 | 103 | if (isset($this->headerNames['host'])) { |
@@ -33,10 +33,10 @@ |
||
33 | 33 | $resource = @\fopen($filename, $mode); |
34 | 34 | if (false === $resource) { |
35 | 35 | if ('' === $mode || false === \in_array($mode[0], ['r', 'w', 'a', 'x', 'c'])) { |
36 | - throw new \InvalidArgumentException('The mode ' . $mode . ' is invalid.'); |
|
36 | + throw new \InvalidArgumentException('The mode '.$mode.' is invalid.'); |
|
37 | 37 | } |
38 | 38 | |
39 | - throw new \RuntimeException('The file ' . $filename . ' cannot be opened.'); |
|
39 | + throw new \RuntimeException('The file '.$filename.' cannot be opened.'); |
|
40 | 40 | } |
41 | 41 | |
42 | 42 | return Stream::create($resource); |
@@ -183,7 +183,7 @@ |
||
183 | 183 | } |
184 | 184 | |
185 | 185 | if (-1 === \fseek($this->stream, $offset, $whence)) { |
186 | - throw new \RuntimeException('Unable to seek to stream position ' . $offset . ' with whence ' . \var_export($whence, true)); |
|
186 | + throw new \RuntimeException('Unable to seek to stream position '.$offset.' with whence '.\var_export($whence, true)); |
|
187 | 187 | } |
188 | 188 | } |
189 | 189 |
@@ -60,7 +60,7 @@ discard block |
||
60 | 60 | $this->query = isset($parts['query']) ? $this->filterQueryAndFragment($parts['query']) : ''; |
61 | 61 | $this->fragment = isset($parts['fragment']) ? $this->filterQueryAndFragment($parts['fragment']) : ''; |
62 | 62 | if (isset($parts['pass'])) { |
63 | - $this->userInfo .= ':' . $parts['pass']; |
|
63 | + $this->userInfo .= ':'.$parts['pass']; |
|
64 | 64 | } |
65 | 65 | } |
66 | 66 | } |
@@ -83,11 +83,11 @@ discard block |
||
83 | 83 | |
84 | 84 | $authority = $this->host; |
85 | 85 | if ('' !== $this->userInfo) { |
86 | - $authority = $this->userInfo . '@' . $authority; |
|
86 | + $authority = $this->userInfo.'@'.$authority; |
|
87 | 87 | } |
88 | 88 | |
89 | 89 | if (null !== $this->port) { |
90 | - $authority .= ':' . $this->port; |
|
90 | + $authority .= ':'.$this->port; |
|
91 | 91 | } |
92 | 92 | |
93 | 93 | return $authority; |
@@ -144,7 +144,7 @@ discard block |
||
144 | 144 | { |
145 | 145 | $info = $user; |
146 | 146 | if (null !== $password && '' !== $password) { |
147 | - $info .= ':' . $password; |
|
147 | + $info .= ':'.$password; |
|
148 | 148 | } |
149 | 149 | |
150 | 150 | if ($this->userInfo === $info) { |
@@ -228,24 +228,24 @@ discard block |
||
228 | 228 | { |
229 | 229 | $uri = ''; |
230 | 230 | if ('' !== $scheme) { |
231 | - $uri .= $scheme . ':'; |
|
231 | + $uri .= $scheme.':'; |
|
232 | 232 | } |
233 | 233 | |
234 | 234 | if ('' !== $authority) { |
235 | - $uri .= '//' . $authority; |
|
235 | + $uri .= '//'.$authority; |
|
236 | 236 | } |
237 | 237 | |
238 | 238 | if ('' !== $path) { |
239 | 239 | if ('/' !== $path[0]) { |
240 | 240 | if ('' !== $authority) { |
241 | 241 | // If the path is rootless and an authority is present, the path MUST be prefixed by "/" |
242 | - $path = '/' . $path; |
|
242 | + $path = '/'.$path; |
|
243 | 243 | } |
244 | 244 | } elseif (isset($path[1]) && '/' === $path[1]) { |
245 | 245 | if ('' === $authority) { |
246 | 246 | // If the path is starting with more than one "/" and no authority is present, the |
247 | 247 | // starting slashes MUST be reduced to one. |
248 | - $path = '/' . \ltrim($path, '/'); |
|
248 | + $path = '/'.\ltrim($path, '/'); |
|
249 | 249 | } |
250 | 250 | } |
251 | 251 | |
@@ -253,11 +253,11 @@ discard block |
||
253 | 253 | } |
254 | 254 | |
255 | 255 | if ('' !== $query) { |
256 | - $uri .= '?' . $query; |
|
256 | + $uri .= '?'.$query; |
|
257 | 257 | } |
258 | 258 | |
259 | 259 | if ('' !== $fragment) { |
260 | - $uri .= '#' . $fragment; |
|
260 | + $uri .= '#'.$fragment; |
|
261 | 261 | } |
262 | 262 | |
263 | 263 | return $uri; |
@@ -291,7 +291,7 @@ discard block |
||
291 | 291 | throw new \InvalidArgumentException('Path must be a string'); |
292 | 292 | } |
293 | 293 | |
294 | - return \preg_replace_callback('/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\/]++|%(?![A-Fa-f0-9]{2}))/', [__CLASS__, 'rawurlencodeMatchZero'], $path); |
|
294 | + return \preg_replace_callback('/(?:[^'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.'%:@\/]++|%(?![A-Fa-f0-9]{2}))/', [__CLASS__, 'rawurlencodeMatchZero'], $path); |
|
295 | 295 | } |
296 | 296 | |
297 | 297 | private function filterQueryAndFragment($str): string |
@@ -300,7 +300,7 @@ discard block |
||
300 | 300 | throw new \InvalidArgumentException('Query and fragment must be a string'); |
301 | 301 | } |
302 | 302 | |
303 | - return \preg_replace_callback('/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/', [__CLASS__, 'rawurlencodeMatchZero'], $str); |
|
303 | + return \preg_replace_callback('/(?:[^'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.'%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/', [__CLASS__, 'rawurlencodeMatchZero'], $str); |
|
304 | 304 | } |
305 | 305 | |
306 | 306 | private static function rawurlencodeMatchZero(array $match): string |