本文整理汇总了PHP中uri::request_uri方法的典型用法代码示例。如果您正苦于以下问题:PHP uri::request_uri方法的具体用法?PHP uri::request_uri怎么用?PHP uri::request_uri使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类uri
的用法示例。
在下文中一共展示了uri::request_uri方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: process
private function process($router)
{
extract($router);
if (!is_callable($handler)) {
if (is_string($handler)) {
$params = array_filter(explode('/', $handler));
} else {
$params = uri::params();
}
$directory_name = array_shift($params);
$directory_real = rtrim(CONTROLLER_PATH.$directory_name.DIRECTORY_SEPARATOR,'/').DIRECTORY_SEPARATOR;
if (!is_dir($directory_real)) {
array_unshift($params, $directory_name);
$directory_name = null;
$directory_real = CONTROLLER_PATH;
}
switch (count($params)) {
case 0:
array_push($params, DEFAULT_CONTROLLER,DEFAULT_METHOD);
break;
case 1:
array_push($params, DEFAULT_METHOD);
break;
default:
$params_chunked = array_chunk($params, 2, false);
$params = array_shift($params_chunked);
break;
}
$class_name = ucwords(array_shift($params));
if (!file_exists($directory_real.$class_name.PHP_EXT)) {
throw new \Exception("Page Not Found", 404);
}
$class_real = str_replace(DIRECTORY_SEPARATOR, '\\', str_replace(APP_PATH, '', $directory_real.$class_name));
$controller = $class_real::get_instance();
self::$controller = $controller;
$method_name = array_shift($params);
if (is_callable([$controller, $method_name])){
$processor = [$controller, $method_name];
} else {
throw new \Exception("Page Not Found", 404);
}
} else {
$processor = $router['handler'];
}
$args = uri::params(3);
if(preg_match('/'.$router['pattern'].'/i', uri::request_uri(), $matches )) {
if(count($matches) >= 2) {
$request_uri_end = array_pop($matches);
$args = array_filter(explode('/', $request_uri_end));
}
}
call_user_func_array($processor,$args);
}