public function path($url = null)
{
if (!isset($this->_path)) {
if (!$url) {
if ($_REQUEST['__url']) {
$url = $_REQUEST['__url'];
} else {
$request = explode('?', $_SERVER['REQUEST_URI'], 2)[0];
$dir = $_SERVER['SCRIPT_NAME'];
$url = preg_replace('/^' . str_replace('/', '\\/', '' . $dir) . '/', '', $request);
$dir = dirname($_SERVER['SCRIPT_NAME']);
$url = preg_replace('/^' . str_replace('/', '\\/', '' . $dir) . '/', '', $url);
$url = substr($url, 0, 1) == '/' ? $url : '/' . $url;
$this->_base = substr($dir, -1) == '/' ? $dir : $dir . '/';
}
}
while (strpos($url, '//') !== false) {
$url = str_replace('//', '/', $url);
}
if ($url[0] == '/') {
$url = substr($url, 1);
}
$url = trim($url);
$url = ltrim($url, '/');
$url = rtrim($url, '/');
$url = trim($url);
$this->_path = $url;
}
return $this->_path;
}