Route类增加rest支持功能

例如:
Route::any('blog/:id','Blog/[rest]');
会自动根据当前的rest请求类型 定位到Blog控制器不同的get put delete put等操作方法

增加文件调度功能
例如:
Route::get('blog/:id',MODULE_PATH.'file/blog.php',['file'=>true]);
把blog/2 的URL请求调度到 MODULE_PATH.'file/blog.php' 文件执行后中止
This commit is contained in:
ThinkPHP
2013-07-04 15:19:00 +08:00
parent dacdb1ee38
commit 2244002a95

View File

@@ -177,13 +177,17 @@ class Route {
}
}
if(0 === strpos($rule, '/') && preg_match($rule, $regx, $matches)) { // 正则路由
if(!empty($option['file'])){
// 调度到某个文件中执行
include $route;
exit;
}
if($route instanceof \Closure) {
// 执行闭包并中止
self::invokeRegx($route, $matches);
exit;
}else{
return self::parseRegex($matches, $route, $regx);
}
return self::parseRegex($matches, $route, $regx);
}else{ // 规则路由
$len1 = substr_count($regx, '/');
$len2 = substr_count($rule, '/');
@@ -196,13 +200,17 @@ class Route {
}
}
if(false !== $var = self::match($regx, $rule)){
if(!empty($option['file'])){
// 调度到某个文件中执行
include $route;
exit;
}
if($route instanceof \Closure) {
// 执行闭包并中止
self::invokeRule($route, $var);
exit;
}else{
return self::parseRule($rule, $route, $regx);
}
return self::parseRule($rule, $route, $regx);
}
}
}
@@ -291,7 +299,8 @@ class Route {
parse_str($url, $var);
}
if(isset($path)) {
$_GET[Config::get('var_action')] = array_pop($path);
$action = array_pop($path);
$_GET[Config::get('var_action')] = '[rest]'==$action? REQUEST_METHOD : $action;
if(!empty($path)) {
$_GET[Config::get('var_controller')] = array_pop($path);
}