From aaee558b8392af8513e736fdff6f802cef4db82e Mon Sep 17 00:00:00 2001 From: wangyidong Date: Thu, 4 Aug 2022 17:30:27 +0800 Subject: [PATCH] * code for task #62742. --- framework/base/model.class.php | 11 ++++++----- framework/base/router.class.php | 10 ++++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/framework/base/model.class.php b/framework/base/model.class.php index 519def4741..37f53b06e5 100644 --- a/framework/base/model.class.php +++ b/framework/base/model.class.php @@ -253,10 +253,15 @@ class baseModel { if(empty($extensionName)) return false; - /* 设置扩展的名字和相应的文件。Set extenson name and extension file. */ $moduleName = $moduleName ? $moduleName : $this->getModuleName(); $moduleName = strtolower($moduleName); $extensionName = strtolower($extensionName); + + /* 设置扩展类的名字。Set the extension class name. */ + $extensionClass = $extensionName . ucfirst($moduleName); + if(isset($this->$extensionClass)) return $this->$extensionClass; + + /* 设置扩展的名字和相应的文件。Set extenson name and extension file. */ $moduleExtPath = $this->app->getModuleExtPath($this->appName, $moduleName, 'model'); if(!empty($moduleExtPath['site'])) $extensionFile = $moduleExtPath['site'] . 'class/' . $extensionName . '.class.php'; if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['custom'] . 'class/' . $extensionName . '.class.php'; @@ -265,10 +270,6 @@ class baseModel if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['xuan'] . 'class/' . $extensionName . '.class.php'; if(!isset($extensionFile) or !file_exists($extensionFile)) $extensionFile = $moduleExtPath['common'] . 'class/' . $extensionName . '.class.php'; - /* 设置扩展类的名字。Set the extension class name. */ - $extensionClass = $extensionName . ucfirst($moduleName); - if(isset($this->$extensionClass)) return $this->$extensionClass; - /* 载入父类。Try to import parent model file auto and then import the extension file. */ if(!class_exists($moduleName . 'Model')) helper::import($this->app->getModulePath($this->appName, $moduleName) . 'model.php'); if(!helper::import($extensionFile)) return false; diff --git a/framework/base/router.class.php b/framework/base/router.class.php index dd4f15306f..2e18212575 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -1525,8 +1525,14 @@ class baseRouter public function checkModuleName($var, $exit = true) { global $filter; - $rule = $filter->default->moduleName; - if(validater::checkByRule($var, $rule)) return true; + static $checkedModule = array(); + if(!isset($checkedModule[$var])) + { + $rule = $filter->default->moduleName; + $result = validater::checkByRule($var, $rule); + $checkedModule[$var] = $result; + } + if($checkedModule[$var]) return true; if(!$exit) return false; $this->triggerError("'$var' illegal. ", __FILE__, __LINE__, $exit = true); }