mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-08 15:42:48 +08:00
改进路由闭包的支持
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
// 应用模式状态
|
// 应用模式状态
|
||||||
'app_status' => 'debug',
|
'app_status' => '',
|
||||||
// PATHINFO变量名 用于兼容模式
|
// PATHINFO变量名 用于兼容模式
|
||||||
'var_pathinfo' => 's',
|
'var_pathinfo' => 's',
|
||||||
// 兼容PATH_INFO获取
|
// 兼容PATH_INFO获取
|
||||||
|
|||||||
@@ -109,11 +109,9 @@ class App
|
|||||||
// 操作方法执行完成监听
|
// 操作方法执行完成监听
|
||||||
Hook::listen('action_end', $data);
|
Hook::listen('action_end', $data);
|
||||||
// 返回数据
|
// 返回数据
|
||||||
$data = Response::returnData($data, $config['default_return_type']);
|
Response::returnData($data, $config['default_return_type']);
|
||||||
if ($config['response_exit']) {
|
if ($config['response_exit']) {
|
||||||
exit($data);
|
exit;
|
||||||
} else {
|
|
||||||
echo $data;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 操作方法不是Public 抛出异常
|
// 操作方法不是Public 抛出异常
|
||||||
@@ -128,7 +126,6 @@ class App
|
|||||||
throw new Exception('[ ' . (new \ReflectionClass($instance))->getName() . ':' . $action . ' ] not exists ', 404);
|
throw new Exception('[ ' . (new \ReflectionClass($instance))->getName() . ':' . $action . ' ] not exists ', 404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 操作绑定到类:模块\controller\控制器\操作类
|
// 操作绑定到类:模块\controller\控制器\操作类
|
||||||
@@ -152,6 +149,7 @@ class App
|
|||||||
return $class;
|
return $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取操作方法的参数绑定
|
||||||
private static function getBindParams($method, $paramsBindType)
|
private static function getBindParams($method, $paramsBindType)
|
||||||
{
|
{
|
||||||
switch ($_SERVER['REQUEST_METHOD']) {
|
switch ($_SERVER['REQUEST_METHOD']) {
|
||||||
@@ -179,41 +177,39 @@ class App
|
|||||||
}
|
}
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* 初始化模块
|
// 初始化模块
|
||||||
* @access private
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
private static function initModule($module, &$config)
|
private static function initModule($module, &$config)
|
||||||
{
|
{
|
||||||
// 加载初始化文件
|
|
||||||
if (is_file(APP_PATH . $module . '/init' . EXT)) {
|
|
||||||
include APP_PATH . $module . '/init' . EXT;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// 定位模块目录
|
// 定位模块目录
|
||||||
$module = COMMON_MODULE == $module ? '' : $module . '/';
|
$module = COMMON_MODULE == $module ? '' : $module . '/';
|
||||||
|
|
||||||
|
// 加载初始化文件
|
||||||
|
if (is_file(APP_PATH . $module . 'init' . EXT)) {
|
||||||
|
include APP_PATH . $module . 'init' . EXT;
|
||||||
|
} else {
|
||||||
|
$path = APP_PATH . $module;
|
||||||
// 加载模块配置
|
// 加载模块配置
|
||||||
$config = Config::load($module . 'config');
|
$config = Config::load($module . 'config');
|
||||||
|
|
||||||
// 加载应用状态配置
|
// 加载应用状态配置
|
||||||
if ($config['app_status'] && is_file(APP_PATH . $module . $config['app_status'] . EXT)) {
|
if ($config['app_status']) {
|
||||||
$config = Config::load($module . $config['app_status']);
|
$config = Config::load($module . $config['app_status']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载别名文件
|
// 加载别名文件
|
||||||
if (is_file(APP_PATH . $module . 'alias' . EXT)) {
|
if (is_file($path . 'alias' . EXT)) {
|
||||||
Loader::addMap(include APP_PATH . $module . 'alias' . EXT);
|
Loader::addMap(include $path . 'alias' . EXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载行为扩展文件
|
// 加载行为扩展文件
|
||||||
if (is_file(APP_PATH . $module . 'tags' . EXT)) {
|
if (is_file($path . 'tags' . EXT)) {
|
||||||
Hook::import(include APP_PATH . $module . 'tags' . EXT);
|
Hook::import(include $path . 'tags' . EXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载公共文件
|
// 加载公共文件
|
||||||
if (is_file(APP_PATH . $module . 'common' . EXT)) {
|
if (is_file($path . 'common' . EXT)) {
|
||||||
include APP_PATH . $module . 'common' . EXT;
|
include $path . 'common' . EXT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -236,7 +232,7 @@ class App
|
|||||||
|
|
||||||
// 检测域名部署
|
// 检测域名部署
|
||||||
if (!IS_CLI && !empty($config['domain_deploy'])) {
|
if (!IS_CLI && !empty($config['domain_deploy'])) {
|
||||||
Route::checkDomain();
|
Route::checkDomain($config['domain_rules']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 监听path_info
|
// 监听path_info
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class Config
|
|||||||
// 加载配置文件
|
// 加载配置文件
|
||||||
public static function load($file, $name = '', $range = '')
|
public static function load($file, $name = '', $range = '')
|
||||||
{
|
{
|
||||||
$file = is_file($file) ? $file : APP_PATH . $file . EXT;
|
$file = strpos($file, '.') ? $file : APP_PATH . $file . EXT;
|
||||||
return is_file($file) ? self::set(include $file, $name, $range) : self::$config[$range];
|
return is_file($file) ? self::set(include $file, $name, $range) : self::$config[$range];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class Response
|
|||||||
$data = $handler . '(' . Transform::jsonEncode($data) . ');';
|
$data = $handler . '(' . Transform::jsonEncode($data) . ');';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return $data;
|
echo $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -111,11 +111,11 @@ class Route
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 检测子域名部署
|
// 检测子域名部署
|
||||||
public static function checkDomain()
|
public static function checkDomain($rules = '')
|
||||||
{
|
{
|
||||||
|
$rules = $rules ?: self::$domain;
|
||||||
// 开启子域名部署 支持二级和三级域名
|
// 开启子域名部署 支持二级和三级域名
|
||||||
if (!empty(self::$domain)) {
|
if (!empty($rules)) {
|
||||||
$rules = self::$domain;
|
|
||||||
if (isset($rules[$_SERVER['HTTP_HOST']])) {
|
if (isset($rules[$_SERVER['HTTP_HOST']])) {
|
||||||
// 完整域名或者IP配置
|
// 完整域名或者IP配置
|
||||||
$rule = $rules[$_SERVER['HTTP_HOST']];
|
$rule = $rules[$_SERVER['HTTP_HOST']];
|
||||||
@@ -339,7 +339,7 @@ class Route
|
|||||||
$args[] = $param->getDefaultValue();
|
$args[] = $param->getDefaultValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$reflect->invokeArgs($args);
|
return $reflect->invokeArgs($args);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 执行规则匹配下的闭包方法 支持参数调用
|
// 执行规则匹配下的闭包方法 支持参数调用
|
||||||
@@ -356,7 +356,7 @@ class Route
|
|||||||
$args[] = $param->getDefaultValue();
|
$args[] = $param->getDefaultValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$reflect->invokeArgs($args);
|
return $reflect->invokeArgs($args);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析模块的URL地址 [模块/]控制器/操作
|
// 解析模块的URL地址 [模块/]控制器/操作
|
||||||
@@ -366,11 +366,8 @@ class Route
|
|||||||
return [null, null, null];
|
return [null, null, null];
|
||||||
}
|
}
|
||||||
$paths = explode('/', $url);
|
$paths = explode('/', $url);
|
||||||
|
|
||||||
$module = defined('BIND_MODULE') ? BIND_MODULE : array_shift($paths);
|
$module = defined('BIND_MODULE') ? BIND_MODULE : array_shift($paths);
|
||||||
|
|
||||||
$controller = defined('BIND_CONTROLLER') ? BIND_CONTROLLER : array_shift($paths);
|
$controller = defined('BIND_CONTROLLER') ? BIND_CONTROLLER : array_shift($paths);
|
||||||
|
|
||||||
$action = $paths ? array_shift($paths) : null;
|
$action = $paths ? array_shift($paths) : null;
|
||||||
|
|
||||||
// 解析剩余的URL参数
|
// 解析剩余的URL参数
|
||||||
|
|||||||
Reference in New Issue
Block a user