Current Directory: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Http
Viewing File: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Http/Uri.php
<?php
namespace YOOtheme\Http;
class Uri extends Message\Uri
{
/**
* @var string
*/
protected $basePath = '';
/**
* Creates an instance from server globals.
*
* @param array $server
* @return static
*/
public static function fromGlobals(array $server = [])
{
if (!$server) {
$server = $_SERVER;
}
$uri = parent::fromGlobals($server);
$path = urldecode($uri->getPath());
$script = parse_url($server['SCRIPT_NAME'], PHP_URL_PATH);
$scriptDir = dirname($script);
if (stripos($path, $script) === 0) {
$uri = $uri->withBasePath($script);
} elseif ($scriptDir !== '/' && stripos($path, $scriptDir) === 0) {
$uri = $uri->withBasePath($scriptDir);
}
return $uri;
}
/**
* Creates an instance from string.
*
* @param string $url
* @param string $basePath
* @return static
*/
public static function fromString($url, $basePath = '')
{
$uri = new static($url);
if ($basePath) {
$uri = $uri->withBasePath($basePath);
}
return $uri;
}
/**
* {@inheritdoc}
*/
public function getPath()
{
if ($this->basePath && substr($this->path, 0, 1) != '/') {
return $this->basePath . '/' . $this->path;
}
return $this->path;
}
/**
* {@inheritdoc}
*/
public function withPath($path)
{
$path = static::filterPath($path);
if ($basePath = $this->basePath and substr($path, 0, 1) == '/') {
if (strpos($path, $basePath) === 0) {
$path = ltrim(substr($path, strlen($basePath)), '/');
} else {
$basePath = '';
}
}
$clone = clone $this;
$clone->path = $path;
$clone->basePath = $basePath;
return $clone;
}
/**
* Retrieve the base path segment of the URI.
*
* @return string
*/
public function getBasePath()
{
return $this->basePath;
}
/**
* Return the fully qualified base URL.
*
* @return string
*/
public function getBaseUrl()
{
$scheme = $this->getScheme();
$basePath = $this->getBasePath();
$authority = $this->getAuthority();
return ($scheme ? $scheme . ':' : '') . ($authority ? '//' . $authority : '') . rtrim($basePath, '/');
}
/**
* Return an instance with the base path.
*
* @param string $basePath
* @return self
*/
public function withBasePath($basePath)
{
$clone = clone $this;
$clone->basePath = static::filterPath(rtrim('/' . trim($basePath, '/'), '/'));
return $clone;
}
/**
* Retrieve query string arguments.
*
* @return array
*/
public function getQueryParams()
{
parse_str($this->getQuery(), $query);
return $query;
}
/**
* Retrieve a value from query string arguments.
*
* @param string $key
* @param mixed $default
* @return mixed
*/
public function getQueryParam($key, $default = null)
{
$query = $this->getQueryParams();
return isset($query[$key]) ? $query[$key] : $default;
}
/**
* Return an instance with the specified query parameters.
*
* @param array $parameters
* @return self
*/
public function withQueryParams(array $parameters)
{
return $this->withQuery(http_build_query($parameters, '', '&'));
}
}