callable类型改为method closure类型改为function

This commit is contained in:
thinkphp
2016-01-13 18:25:03 +08:00
parent 63d795c345
commit c94d5d12aa
2 changed files with 14 additions and 14 deletions

View File

@@ -91,19 +91,19 @@ class App
break; break;
case 'module': case 'module':
// 模块/控制器/操作 // 模块/控制器/操作
$data = self::module(self::$dispatch['data'], $config); $data = self::module(self::$dispatch['module'], $config);
break; break;
case 'controller': case 'controller':
// 执行控制器操作 // 执行控制器操作
$data = Loader::action(self::$dispatch['controller'], self::$dispatch['params']); $data = Loader::action(self::$dispatch['controller'], self::$dispatch['params']);
break; break;
case 'callable': case 'method':
// 执行回调方法 // 执行回调方法
$data = self::invokeMethod(self::$dispatch['callable'], self::$dispatch['params']); $data = self::invokeMethod(self::$dispatch['method'], self::$dispatch['params']);
break; break;
case 'closure': case 'function':
// 规则闭包 // 规则闭包
$data = self::invokeFunction(self::$dispatch['closure'], self::$dispatch['params']); $data = self::invokeFunction(self::$dispatch['function'], self::$dispatch['params']);
break; break;
default: default:
throw new Exception('dispatch type not support', 10008); throw new Exception('dispatch type not support', 10008);
@@ -115,9 +115,9 @@ class App
} }
// 执行函数或者闭包方法 支持参数调用 // 执行函数或者闭包方法 支持参数调用
private static function invokeFunction($closure, $vars = []) private static function invokeFunction($function, $vars = [])
{ {
$reflect = new \ReflectionFunction($closure); $reflect = new \ReflectionFunction($function);
$args = self::bindParams($reflect, $vars); $args = self::bindParams($reflect, $vars);
return $reflect->invokeArgs($args); return $reflect->invokeArgs($args);
} }

View File

@@ -118,7 +118,7 @@ class Route
$rule = substr($rule, 1, -1); $rule = substr($rule, 1, -1);
$result = ['routes' => $route, 'option' => $option, 'pattern' => $pattern]; $result = ['routes' => $route, 'option' => $option, 'pattern' => $pattern];
} elseif (is_array($route)) { } elseif (is_array($route)) {
$result = ['route' => !empty($route[0])?$route[0]:'', 'option' => !empty($route[1])?$route[1]:'', 'pattern' => !empty($route[2])?$route[2]:'']; $result = ['route' => !empty($route[0]) ? $route[0] : '', 'option' => !empty($route[1]) ? $route[1] : '', 'pattern' => !empty($route[2]) ? $route[2] : ''];
} else { } else {
$result = ['route' => $route, 'option' => $option, 'pattern' => $pattern]; $result = ['route' => $route, 'option' => $option, 'pattern' => $pattern];
} }
@@ -297,7 +297,7 @@ class Route
if (!empty($array[1])) { if (!empty($array[1])) {
self::parseUrlParams($array[1]); self::parseUrlParams($array[1]);
} }
$return = ['type' => 'callable', 'callable' => [self::$bind['class'], $array[0] ?: Config::get('default_action')], 'params' => []]; $return = ['type' => 'method', 'method' => [self::$bind['class'], $array[0] ?: Config::get('default_action')], 'params' => []];
break; break;
case 'namespace': case 'namespace':
// 绑定到命名空间 // 绑定到命名空间
@@ -307,7 +307,7 @@ class Route
if (!empty($array[2])) { if (!empty($array[2])) {
self::parseUrlParams($array[2]); self::parseUrlParams($array[2]);
} }
$return = ['type' => 'callable', 'callable' => [self::$bind['namespace'] . '\\' . $class, $method], 'params' => []]; $return = ['type' => 'method', 'method' => [self::$bind['namespace'] . '\\' . $class, $method], 'params' => []];
break; break;
case 'module': case 'module':
// 如果有模块/控制器绑定 针对路由到 模块/控制器 有效 // 如果有模块/控制器绑定 针对路由到 模块/控制器 有效
@@ -424,7 +424,7 @@ class Route
if (false !== $match = self::match($url, $rule, $pattern)) { if (false !== $match = self::match($url, $rule, $pattern)) {
if ($route instanceof \Closure) { if ($route instanceof \Closure) {
// 执行闭包 // 执行闭包
return ['type' => 'closure', 'closure' => $route, 'params' => $match]; return ['type' => 'function', 'function' => $route, 'params' => $match];
} }
return self::parseRule($rule, $route, $url); return self::parseRule($rule, $route, $url);
} }
@@ -462,7 +462,7 @@ class Route
if (!empty($result['var'])) { if (!empty($result['var'])) {
$_GET = array_merge($result['var'], $_GET); $_GET = array_merge($result['var'], $_GET);
} }
return ['type' => 'module', 'data' => $result['route']]; return ['type' => 'module', 'module' => $result['route']];
} }
// 解析规范的路由地址 // 解析规范的路由地址
@@ -568,7 +568,7 @@ class Route
$result = ['type' => 'redirect', 'url' => $url, 'status' => (is_array($route) && isset($route[1])) ? $route[1] : 301]; $result = ['type' => 'redirect', 'url' => $url, 'status' => (is_array($route) && isset($route[1])) ? $route[1] : 301];
} elseif (0 === strpos($url, '\\')) { } elseif (0 === strpos($url, '\\')) {
// 路由到回调 // 路由到回调
$result = ['type' => 'callable', 'callable' => $route, 'params' => $matches]; $result = ['type' => 'method', 'method' => $route, 'params' => $matches];
} elseif (0 === strpos($url, '@')) { } elseif (0 === strpos($url, '@')) {
// 路由到控制器 // 路由到控制器
$result = ['type' => 'controller', 'controller' => substr($url, 1), 'params' => $matches]; $result = ['type' => 'controller', 'controller' => substr($url, 1), 'params' => $matches];
@@ -586,7 +586,7 @@ class Route
$var = array_merge($matches, $var); $var = array_merge($matches, $var);
// 解析剩余的URL参数 // 解析剩余的URL参数
self::parseUrlParams(implode('/', $paths), $var); self::parseUrlParams(implode('/', $paths), $var);
$result = ['type' => 'module', 'data' => $result['route']]; $result = ['type' => 'module', 'module' => $result['route']];
} }
return $result; return $result;
} }