fuc/vendor/slim/http/src/Uri.php
2025-02-23 13:30:57 +08:00

188 lines
3.5 KiB
PHP
Executable File

<?php
/**
* Slim Framework (https://slimframework.com)
*
* @license https://github.com/slimphp/Slim-Http/blob/master/LICENSE.md (MIT License)
*/
declare(strict_types=1);
namespace Slim\Http;
use Psr\Http\Message\UriInterface;
class Uri implements UriInterface
{
protected UriInterface $uri;
/**
* @param UriInterface $uri
*/
final public function __construct(UriInterface $uri)
{
$this->uri = $uri;
}
/**
* Disable magic setter to ensure immutability
* @param mixed $name
* @param mixed $value
* @return void
*/
public function __set($name, $value)
{
}
/**
* {@inheritdoc}
*/
public function getAuthority(): string
{
return $this->uri->getAuthority();
}
/**
* {@inheritdoc}
*/
public function getFragment(): string
{
return $this->uri->getFragment();
}
/**
* {@inheritdoc}
*/
public function getHost(): string
{
return $this->uri->getHost();
}
/**
* {@inheritdoc}
*/
public function getPath(): string
{
return $this->uri->getPath();
}
/**
* {@inheritdoc}
*/
public function getPort(): ?int
{
return $this->uri->getPort();
}
/**
* {@inheritdoc}
*/
public function getQuery(): string
{
return $this->uri->getQuery();
}
/**
* {@inheritdoc}
*/
public function getScheme(): string
{
return $this->uri->getScheme();
}
/**
* {@inheritdoc}
*/
public function getUserInfo(): string
{
return $this->uri->getUserInfo();
}
/**
* {@inheritdoc}
*/
public function withFragment($fragment): UriInterface
{
$uri = $this->uri->withFragment($fragment);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function withHost($host): UriInterface
{
$uri = $this->uri->withHost($host);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function withPath($path): UriInterface
{
$uri = $this->uri->withPath($path);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function withPort($port): UriInterface
{
$uri = $this->uri->withPort($port);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function withQuery($query): UriInterface
{
$uri = $this->uri->withQuery($query);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function withScheme($scheme): UriInterface
{
$uri = $this->uri->withScheme($scheme);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function withUserInfo($user, $password = null): UriInterface
{
$uri = $this->uri->withUserInfo($user, $password);
return new static($uri);
}
/**
* {@inheritdoc}
*/
public function __toString(): string
{
return $this->uri->__toString();
}
/**
* Return the fully qualified base URL.
*
* Note that this method never includes a trailing slash
*
* This method is not part of PSR-7.
*
* @return string
*/
public function getBaseUrl(): string
{
$scheme = $this->uri->getScheme();
$authority = $this->uri->getAuthority();
return ($scheme !== '' ? $scheme . ':' : '') . ($authority !== '' ? '//' . $authority : '');
}
}