Your IP : 216.73.216.240
<?php
/*
* @package Tech Fry Library
* @license https://www.gnu.org/licenses/gpl-3.0.en.html
*/
namespace TechFry\Library;
defined('_JEXEC') or die;
use Joomla\Uri\Uri;
use Joomla\Uri\UriHelper;
// Class to access and manipulate URI (8 parts) - scheme (http), host, port, user, pass, path, query, fragment
// https://www.php.net/manual/en/function.parse-url.php
class TUri
{
// Parts of Uri: scheme, host, port, path, query, fragment
public $juri;
public $url;
public $parts;
public $scheme;
public $host;
public $port;
public $path;
public $query;
public $vars = [];
public $fragment;
public function __construct($url = '')
{
$this->url = $url;
$this->juri = new Uri($url);
$this->scheme = $this->juri->getScheme();
$this->host = $this->juri->getHost();
$this->port = $this->juri->getPort();
$this->path = $this->juri->getPath();
$this->query = $this->juri->getQuery();
$this->vars = $this->juri->getQuery(true);
$this->fragment = $this->juri->getFragment();
}
public function get_url()
{
return $this->juri->render();
}
// Returns Array
public function parse_url()
{
return UriHelper::parse_url($this->url);
}
// http or https
public function get_scheme()
{
return $this->scheme;
}
// subdomain.domain.tld
public function get_host()
{
return $this->host;
}
// After host and before query string
public function get_path()
{
return $this->path;
}
// After the question mark ?
public function get_query($parse = false)
{
if ($parse)
{
return $this->vars;
}
return $this->query;
}
// After the hash #
public function get_fragment()
{
return $this->fragment;
}
public function get_var($name, $default = null)
{
return $this->juri->getVar($name, $default);
}
public function set_var($name, $value)
{
return $this->juri->setVar($name, $value);
}
public function del_var($name)
{
return $this->juri->delVar($name);
}
public function set_query($query)
{
$this->juri->setQuery($query);
}
public function set_scheme($scheme)
{
$this->juri->setScheme($scheme);
}
public function set_host($host)
{
$this->juri->setHost($host);
}
public function set_port($port)
{
$this->juri->setPort($port);
}
public function set_path($path)
{
$this->juri->setPath($path);
}
public function set_fragment($fragment)
{
$this->juri->setFragment($fragment);
}
public function get_filename()
{
$parts = pathinfo($this->url);
return $parts['basename'];
}
public function get_ext()
{
$parts = pathinfo($this->url);
return $parts['extension'];
}
}