aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/uri/lib/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/uri/lib/functions.php')
-rw-r--r--vendor/sabre/uri/lib/functions.php79
1 files changed, 31 insertions, 48 deletions
diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php
index 01ef92d7e..64e64027f 100644
--- a/vendor/sabre/uri/lib/functions.php
+++ b/vendor/sabre/uri/lib/functions.php
@@ -26,15 +26,15 @@ function resolve(string $basePath, string $newPath): string
// If the new path defines a scheme, it's absolute and we can just return
// that.
- if (null !== $delta['scheme']) {
+ if ($delta['scheme']) {
return build($delta);
}
$base = parse($basePath);
$pick = function ($part) use ($base, $delta) {
- if (null !== $delta[$part]) {
+ if ($delta[$part]) {
return $delta[$part];
- } elseif (null !== $base[$part]) {
+ } elseif ($base[$part]) {
return $base[$part];
}
@@ -47,6 +47,7 @@ function resolve(string $basePath, string $newPath): string
$newParts['host'] = $pick('host');
$newParts['port'] = $pick('port');
+ $path = '';
if (is_string($delta['path']) and strlen($delta['path']) > 0) {
// If the path starts with a slash
if ('/' === $delta['path'][0]) {
@@ -61,10 +62,7 @@ function resolve(string $basePath, string $newPath): string
$path .= '/'.$delta['path'];
}
} else {
- $path = $base['path'] ?? '/';
- if ('' === $path) {
- $path = '/';
- }
+ $path = $base['path'] ?: '/';
}
// Removing .. and .
$pathParts = explode('/', $path);
@@ -87,17 +85,13 @@ function resolve(string $basePath, string $newPath): string
// If the source url ended with a /, we want to preserve that.
$newParts['path'] = 0 === strpos($path, '/') ? $path : '/'.$path;
- // From PHP 8, no "?" query at all causes 'query' to be null.
- // An empty query "http://example.com/foo?" causes 'query' to be the empty string
- if (null !== $delta['query'] && '' !== $delta['query']) {
+ if ($delta['query']) {
$newParts['query'] = $delta['query'];
- } elseif (isset($base['query']) && null === $delta['host'] && null === $delta['path']) {
+ } elseif (!empty($base['query']) && empty($delta['host']) && empty($delta['path'])) {
// Keep the old query if host and path didn't change
$newParts['query'] = $base['query'];
}
- // From PHP 8, no "#" fragment at all causes 'fragment' to be null.
- // An empty fragment "http://example.com/foo#" causes 'fragment' to be the empty string
- if (null !== $delta['fragment'] && '' !== $delta['fragment']) {
+ if ($delta['fragment']) {
$newParts['fragment'] = $delta['fragment'];
}
@@ -119,7 +113,7 @@ function normalize(string $uri): string
{
$parts = parse($uri);
- if (null !== $parts['path']) {
+ if (!empty($parts['path'])) {
$pathParts = explode('/', ltrim($parts['path'], '/'));
$newPathParts = [];
foreach ($pathParts as $pathPart) {
@@ -140,14 +134,14 @@ function normalize(string $uri): string
$parts['path'] = '/'.implode('/', $newPathParts);
}
- if (null !== $parts['scheme']) {
+ if ($parts['scheme']) {
$parts['scheme'] = strtolower($parts['scheme']);
$defaultPorts = [
'http' => '80',
'https' => '443',
];
- if (null !== $parts['port'] && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
+ if (!empty($parts['port']) && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
// Removing default ports.
unset($parts['port']);
}
@@ -155,7 +149,7 @@ function normalize(string $uri): string
switch ($parts['scheme']) {
case 'http':
case 'https':
- if (null === $parts['path']) {
+ if (empty($parts['path'])) {
// An empty path is equivalent to / in http.
$parts['path'] = '/';
}
@@ -163,7 +157,7 @@ function normalize(string $uri): string
}
}
- if (null !== $parts['host']) {
+ if ($parts['host']) {
$parts['host'] = strtolower($parts['host']);
}
@@ -207,7 +201,7 @@ function parse(string $uri): array
}
$result = parse_url($uri);
- if (false === $result) {
+ if (!$result) {
$result = _parse_fallback($uri);
}
@@ -244,32 +238,32 @@ function build(array $parts): string
$uri = '';
$authority = '';
- if (isset($parts['host'])) {
+ if (!empty($parts['host'])) {
$authority = $parts['host'];
- if (isset($parts['user'])) {
+ if (!empty($parts['user'])) {
$authority = $parts['user'].'@'.$authority;
}
- if (isset($parts['port'])) {
+ if (!empty($parts['port'])) {
$authority = $authority.':'.$parts['port'];
}
}
- if (isset($parts['scheme'])) {
+ if (!empty($parts['scheme'])) {
// If there's a scheme, there's also a host.
$uri = $parts['scheme'].':';
}
- if ('' !== $authority || (isset($parts['scheme']) && 'file' === $parts['scheme'])) {
+ if ($authority || (!empty($parts['scheme']) && 'file' === $parts['scheme'])) {
// No scheme, but there is a host.
$uri .= '//'.$authority;
}
- if (isset($parts['path'])) {
+ if (!empty($parts['path'])) {
$uri .= $parts['path'];
}
- if (isset($parts['query'])) {
+ if (!empty($parts['query'])) {
$uri .= '?'.$parts['query'];
}
- if (isset($parts['fragment'])) {
+ if (!empty($parts['fragment'])) {
$uri .= '#'.$parts['fragment'];
}
@@ -296,7 +290,7 @@ function build(array $parts): string
function split(string $path): array
{
$matches = [];
- if (1 === preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
+ if (preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
return [$matches[1], $matches[2]];
}
@@ -313,7 +307,7 @@ function split(string $path): array
* This function is only called if the main parse method fails. It's pretty
* crude and probably slow, so the original parse_url is usually preferred.
*
- * @return array{scheme: string|null, host: string|null, path: string|null, port: positive-int|null, user: string|null, query: string|null, fragment: string|null}
+ * @return array<string, mixed>
*
* @throws InvalidUriException
*/
@@ -346,14 +340,10 @@ function _parse_fallback(string $uri): array
'query' => null,
];
- if (1 === preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
+ if (preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
$result['scheme'] = $matches[1];
// Take what's left.
$uri = substr($uri, strlen($result['scheme']) + 1);
- if (false === $uri) {
- // There was nothing left.
- $uri = '';
- }
}
// Taking off a fragment part
@@ -368,11 +358,7 @@ function _parse_fallback(string $uri): array
if ('///' === substr($uri, 0, 3)) {
// The triple slash uris are a bit unusual, but we have special handling
// for them.
- $path = substr($uri, 2);
- if (false === $path) {
- throw new \RuntimeException('The string cannot be false');
- }
- $result['path'] = $path;
+ $result['path'] = substr($uri, 2);
$result['host'] = '';
} elseif ('//' === substr($uri, 0, 2)) {
// Uris that have an authority part.
@@ -383,25 +369,22 @@ function _parse_fallback(string $uri): array
(?: : (?<port> [0-9]+))?
(?<path> / .*)?
$%x';
- if (1 !== preg_match($regex, $uri, $matches)) {
+ if (!preg_match($regex, $uri, $matches)) {
throw new InvalidUriException('Invalid, or could not parse URI');
}
- if (isset($matches['host']) && '' !== $matches['host']) {
+ if ($matches['host']) {
$result['host'] = $matches['host'];
}
if (isset($matches['port'])) {
- $port = (int) $matches['port'];
- if ($port > 0) {
- $result['port'] = $port;
- }
+ $result['port'] = (int) $matches['port'];
}
if (isset($matches['path'])) {
$result['path'] = $matches['path'];
}
- if (isset($matches['user']) && '' !== $matches['user']) {
+ if ($matches['user']) {
$result['user'] = $matches['user'];
}
- if (isset($matches['pass']) && '' !== $matches['pass']) {
+ if ($matches['pass']) {
$result['pass'] = $matches['pass'];
}
} else {