diff --git a/base.php b/base.php index 768dea1d..4638313c 100644 --- a/base.php +++ b/base.php @@ -37,7 +37,6 @@ defined('VIEW_LAYER') or define('VIEW_LAYER', 'view'); defined('CONTROLLER_LAYER') or define('CONTROLLER_LAYER', 'controller'); defined('VALIDATE_LAYER') or define('VALIDATE_LAYER', 'validate'); defined('APP_MULTI_MODULE') or define('APP_MULTI_MODULE', true); // 是否多模块 -defined('APP_HOOK') or define('APP_HOOK', false); // 是否开启HOOK defined('ENV_PREFIX') or define('ENV_PREFIX', 'PHP_'); // 环境变量的配置前缀 defined('IS_API') or define('IS_API', false); // 是否API接口 defined('APP_AUTO_RUN') or define('APP_AUTO_RUN', true); // 是否自动运行 diff --git a/library/think/Route.php b/library/think/Route.php index 1ed5660f..36250828 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -598,6 +598,17 @@ class Route $m2 = explode('/', $rule); $var = []; foreach ($m2 as $key => $val) { + // val中定义了多个变量 + if (preg_match_all('/<(\w+)>/', $val, $matches)) { + foreach ($matches[1] as $name) { + $val = str_replace('<' . $name . '>', '(' . $pattern[$name] . ')', $val); + } + if (!preg_match('/^' . $val . '$/', $m1[$key])) { + return false; + } + continue; + } + if (0 === strpos($val, '[:')) { // 可选参数 $val = substr($val, 1, -1); diff --git a/think.php b/think.php index 3935b085..5ad6f069 100644 --- a/think.php +++ b/think.php @@ -54,6 +54,9 @@ if (isset($mode['config'])) { is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']); } +// 是否开启HOOK +defined('APP_HOOK') or define('APP_HOOK', false); + // 加载模式行为定义 if (APP_HOOK && isset($mode['tags'])) { Hook::import($mode['tags']);