@@ -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 |