From 3b6152c83cd8657936c6ff4c3f4d0ec32bf44e70 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Fri, 25 Mar 2016 15:19:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E8=B7=AF=E7=94=B1=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=AE=9A=E4=B9=89=20APP=5FHOOK=E5=B8=B8=E9=87=8F?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E4=BD=8D=E7=BD=AE=E7=A7=BB=E5=8A=A8=20?= =?UTF-8?q?=E4=BE=BF=E4=BA=8E=E5=BA=94=E7=94=A8=E6=A8=A1=E5=BC=8F=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base.php | 1 - library/think/Route.php | 11 +++++++++++ think.php | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) 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']);