改进App类和Request类

This commit is contained in:
thinkphp
2016-06-24 23:41:02 +08:00
parent c4ef774882
commit 7f13d70d0b
3 changed files with 29 additions and 15 deletions

View File

@@ -64,6 +64,8 @@ class App
*/ */
protected static $routeMust; protected static $routeMust;
protected static $dispatch;
/** /**
* 执行应用程序 * 执行应用程序
* @access public * @access public
@@ -90,12 +92,14 @@ class App
} }
} }
// 获取当前请求的调度信息 // 获取应用调度信息
$dispatch = $request->dispatch(); $dispatch = self::$dispatch;
if (empty($dispatch)) { if (empty($dispatch)) {
// 未指定调度类型 则进行URL路由检测 // 未指定调度类型 则进行URL路由检测
$dispatch = self::routeCheck($request, $config); $dispatch = self::routeCheck($request, $config);
} }
// 记录当前调度信息
$request->dispatch($dispatch);
// 记录路由信息 // 记录路由信息
self::$debug && Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info'); self::$debug && Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info');
// 监听app_begin // 监听app_begin
@@ -150,6 +154,19 @@ class App
} }
} }
/**
* 设置当前请求的调度信息
* @access public
* @param array|string $dispatch 调度信息
* @param string $type 调度类型
* @param array $params 参数
* @return void
*/
public static function dispatch($dispath, $type = 'module', $params = [])
{
self::$dispatch = ['type' => $type, $type => $dispatch, 'params' => $params];
}
/** /**
* 执行函数或者闭包方法 支持参数调用 * 执行函数或者闭包方法 支持参数调用
* @access public * @access public
@@ -453,9 +470,7 @@ class App
// 路由无效 解析模块/控制器/操作/参数... 支持控制器自动搜索 // 路由无效 解析模块/控制器/操作/参数... 支持控制器自动搜索
$result = Route::parseUrl($path, $depr, $config['controller_auto_search'], $config['url_param_type']); $result = Route::parseUrl($path, $depr, $config['controller_auto_search'], $config['url_param_type']);
} }
return $result;
// 注册调度机制
return $request->dispatch($result);
} }
/** /**

View File

@@ -1296,15 +1296,13 @@ class Request
/** /**
* 设置或者获取当前请求的调度信息 * 设置或者获取当前请求的调度信息
* @access public * @access public
* @param array|string $dispatch 调度信息 * @param array $dispatch 调度信息
* @param string $type 调度类型
* @param array $params 参数
* @return array * @return array
*/ */
public function dispatch($dispatch = null, $type = 'module', $params = []) public function dispatch($dispatch = null)
{ {
if (!is_null($dispatch)) { if (!is_null($dispatch)) {
$this->dispatch = ['type' => $type, $type => $dispatch, 'params' => $params]; $this->dispatch = $dispatch;
} }
return $this->dispatch; return $this->dispatch;
} }

View File

@@ -18,10 +18,10 @@ use think\db\Builder;
*/ */
class Sqlsrv extends Builder class Sqlsrv extends Builder
{ {
protected $selectSql = 'SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER (%ORDER%) AS ROW_NUMBER FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%) AS thinkphp) AS T1 %LIMIT%%COMMENT%'; protected $selectSql = 'SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER (%ORDER%) AS ROW_NUMBER FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%) AS thinkphp) AS T1 %LIMIT%%COMMENT%';
protected $selectInsertSql = 'SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%'; protected $selectInsertSql = 'SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%';
protected $updateSql = 'UPDATE %TABLE% SET %SET% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%'; protected $updateSql = 'UPDATE %TABLE% SET %SET% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%';
protected $deleteSql = 'DELETE FROM %TABLE% %USING% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%'; protected $deleteSql = 'DELETE FROM %TABLE% %USING% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%';
/** /**
* order分析 * order分析
@@ -79,9 +79,10 @@ class Sqlsrv extends Builder
} }
return 'WHERE ' . $limitStr; return 'WHERE ' . $limitStr;
} }
public function selectInsert($fields, $table, $options)
public function selectInsert($fields, $table, $options)
{ {
$this->selectSql=$this->selectInsertSql; $this->selectSql = $this->selectInsertSql;
return parent::selectInsert($fields, $table, $options); return parent::selectInsert($fields, $table, $options);
} }