本文整理汇总了PHP中UrlHelper::convertUrlToPath方法的典型用法代码示例。如果您正苦于以下问题:PHP UrlHelper::convertUrlToPath方法的具体用法?PHP UrlHelper::convertUrlToPath怎么用?PHP UrlHelper::convertUrlToPath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UrlHelper
的用法示例。
在下文中一共展示了UrlHelper::convertUrlToPath方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: matchPath
/**
* Tests if this Route matches the given path
*
* @param string $path
*
* @return boolean
*/
private function matchPath($path)
{
list($basePath, $querystring) = array_pad(explode('?', $path, 2), 2, null);
if ($this->path == '*') {
$subdomainPath = UrlHelper::convertUrlToPath($path);
$testPath = $this->controller . '/' . $subdomainPath;
if (is_dir(CONTROLLER_PATH . $testPath) && is_readable(CONTROLLER_PATH . $testPath . '/controller.php')) {
$this->controller = $testPath;
return true;
}
}
preg_match_all("|<([-_a-zA-Z0-9]+)>|", $this->path, $namedParameterMatches);
if ($namedParameterMatches[0]) {
$pathRegex = $this->path;
$pathVariables = array();
foreach ($namedParameterMatches[1] as $capture) {
$pathVariables[] = $capture;
if (array_key_exists($capture, $this->regexArray)) {
$pathRegex = str_replace('<' . $capture . '>', $this->regexArray[$capture], $pathRegex);
} else {
$pathRegex = str_replace('<' . $capture . '>', "([^\\.\\?\\/]+)", $pathRegex);
}
}
//try matching url ignoring querystring
if (preg_match('|^' . $pathRegex . '$|', $basePath, $pathMatches)) {
array_shift($pathMatches);
foreach ($pathMatches as $match) {
$this->pathVariables[array_shift($pathVariables)] = $match;
}
return true;
}
//try again using querystring
if (preg_match('|^' . $pathRegex . '$|', $path, $pathMatches)) {
array_shift($pathMatches);
foreach ($pathMatches as $match) {
$this->pathVariables[array_shift($pathVariables)] = $match;
}
return true;
}
} elseif ($this->path == $path || $this->path == $basePath) {
return true;
} elseif (empty($this->path) && empty($basePath)) {
return true;
}
return false;
}
示例2: dispatch
/**
* Finds and loads a Controller for the given http request
* @return boolean
*/
public function dispatch()
{
include_once BOOTSTRAP_FILE;
$this->_domain = $_SERVER['HTTP_HOST'];
$this->_url = $_SERVER['REQUEST_URI'];
$this->_args = $_GET;
$route = $this->findCustomRoute();
if ($route) {
//handle custom route
if ($route->isRedirect()) {
RequestHelper::redirect($route->httpStatus, $route->redirectLocation);
} else {
include CONTROLLER_PATH . $route->controller . '/controller.php';
$template = $route->controller . '/view';
$controller = new page();
$controller->set_view($template);
$controller->set_args($route->pathVariables);
$controller->get();
}
} else {
//custom route not found, map url to filesystem
//auto map subdomains to _subdomain_ folders
$subdomain = str_replace(Config::get('NAKED_DOMAIN'), '', $this->_domain);
$subdomainFolder = "";
if (substr($subdomain, -1) == '.') {
$subdomain = substr($subdomain, 0, -1);
}
if ($subdomain != Config::get('DEFAULT_SUBDOMAIN')) {
//redirect naked domain to default subdomain, if necessary;
if (empty($subdomain)) {
RequestHelper::redirect(UrlHelper::uri($this->_url));
die;
} else {
$subdomainFolder = '_' . $subdomain . '_/';
if (!is_dir(CONTROLLER_PATH . $subdomainFolder)) {
if (is_dir(CONTROLLER_PATH . '_*_/')) {
include CONTROLLER_PATH . '_*_/controller.php';
$template = CONTROLLER_PATH . '_*_/view';
$controller = new page();
$controller->set_view($template);
$controller->set_args(array('subdomain' => $subdomain));
$controller->get();
die;
} else {
$this->throwError('404');
}
}
}
}
//on default subdomain, so continue
$path = UrlHelper::convertUrlToPath($this->_url);
if (empty($path)) {
if (is_dir(CONTROLLER_PATH . $subdomainFolder) && is_readable(CONTROLLER_PATH . $subdomainFolder . 'controller.php')) {
include CONTROLLER_PATH . $subdomainFolder . 'controller.php';
$template = $subdomainFolder . 'view';
} else {
$this->throwError('404');
}
} elseif (is_dir(CONTROLLER_PATH . $subdomainFolder . $path) && is_readable(CONTROLLER_PATH . $subdomainFolder . $path . '/controller.php')) {
include CONTROLLER_PATH . $subdomainFolder . $path . '/controller.php';
$template = $subdomainFolder . $path . DS . 'view';
} elseif (is_readable(CONTROLLER_PATH . $subdomainFolder . $path)) {
$file = CONTROLLER_PATH . $subdomainFolder . $path;
if (function_exists('finfo_open')) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
// return mime type ala mimetype extension
header("Content-type: " . finfo_file($finfo, $file));
finfo_close($finfo);
} elseif (function_exists('mime_content_type')) {
header("Content-type: " . mime_content_type($file));
} else {
header("Content-type: text/plain");
}
readfile($file);
die;
} else {
$this->throwError('404');
return false;
}
$controller = new page();
$controller->set_view($template);
$controller->get();
}
return true;
}