From cd0f77fca8535f6005806bbcaa691cc27c5146e8 Mon Sep 17 00:00:00 2001 From: wangchunsheng Date: Thu, 7 Jun 2012 08:14:46 +0000 Subject: [PATCH] + add loadExtension() method. --- framework/helper.class.php | 42 +++++++------------------------------- framework/model.class.php | 32 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/framework/helper.class.php b/framework/helper.class.php index 3a341a802f..71f04a8bd5 100644 --- a/framework/helper.class.php +++ b/framework/helper.class.php @@ -172,49 +172,21 @@ class helper { $modelClass = $moduleName . 'Model'; $extModelClass = 'ext' . $modelClass; - $modelLines = "'); // To make sure the last end tag is removed. $modelLines .= "class $extModelClass extends $modelClass {\n"; /* Cycle all the extension files. */ - $encryptFiles = array(); foreach($extFiles as $extFile) { - $className = $moduleName . str_replace('.php', '', basename($extFile)); $extLines = trim(file_get_contents($extFile)); - if(preg_match('/function +/i', $extLines) == 1) - { - $extLines = trim($extLines); - if(strpos($extLines, '') !== false)$extLines = rtrim($extLines, '?\>'); - $modelLines .= $extLines . "\n"; - } - else - { - $encryptFiles[$className] = $extFile; - } + if(strpos($extLines, '') !== false) $extLines = rtrim($extLines, '?>'); + $modelLines .= $extLines . "\n"; } - $extClasses = ''; - $modelLines .= "\tpublic function __call(\$method, \$params)\n\t{\n"; - foreach($encryptFiles as $extClass => $encryptFile) - { - $modelLines .= "\t\tinclude '$encryptFile';\n"; - $extClasses .= "'$extClass',"; - } - $extClasses = rtrim($extClasses, ','); - $modelLines .=<<$moduleName; } + /** + * Load extension class of a model. Saved to $moduleName/ext/model/class/$extensionName.class.php. + * + * @param string $extensionName + * @param string $moduleName + * @access public + * @return void + */ + public function loadExtension($extensionName, $moduleName = '') + { + if(empty($extensionName)) return false; + + /* Set extenson name and extension file. */ + $extensionName = strtolower($extensionName); + $moduleName = $moduleName ? $moduleName : $this->getModuleName(); + $extensionFile = $this->app->getModuleExtPath($moduleName, 'model') . 'class/' . $extensionName . '.class.php'; + + /* Try to import parent model file auto and then import the extension file. */ + if(!class_exists($moduleName . 'Model')) helper::import($this->app->getModulePath($moduleName) . 'model.php'); + if(!helper::import($extensionFile)) return false; + + /* Set the extension class name. */ + $extensionClass = $extensionName . ucfirst($moduleName); + if(!class_exists($extensionClass)) return false; + + /* Create an instance of the extension class and return it. */ + $extensionObject = new $extensionClass; + $extensionClass = str_replace('Model', '', $extensionClass); + $this->$extensionClass = $extensionObject; + return $extensionObject; + } + //-------------------- DAO related method s--------------------// /**