From d0753e746bd1d2bfd4ea113ea2edf921d37d7b61 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 6 Apr 2015 21:18:39 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=93=88=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EB=A1=9C=EB=94=A9=EC=97=90=EC=84=9C=20autoload?= =?UTF-8?q?=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/module/ModuleHandler.class.php | 25 ++++++------------------- config/config.inc.php | 8 ++++++++ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 075afb838..070198be8 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -1043,31 +1043,18 @@ class ModuleHandler extends Handler ModuleHandler::_getModuleFilePath($module, $type, $kind, $class_path, $high_class_file, $class_file, $instance_name); } - // Get base class name and load the file contains it - if(!class_exists($module, false)) + // Check if the base class and instance class exist + if(!class_exists($module, true)) { - $high_class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module); - if(!file_exists($high_class_file)) - { - return NULL; - } - require_once($high_class_file); + return NULL; } - - // Get the name of the class file - if(!is_readable($class_file)) + if(!class_exists($instance_name, true)) { return NULL; } - // Create an instance with eval function - require_once($class_file); - if(!class_exists($instance_name, false)) - { - return NULL; - } - $tmp_fn = create_function('', "return new {$instance_name}();"); - $oModule = $tmp_fn(); + // Create an instance + $oModule = new $instance_name(); if(!is_object($oModule)) { return NULL; diff --git a/config/config.inc.php b/config/config.inc.php index 420dbabc9..d1986ba14 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -332,6 +332,14 @@ if(!defined('__XE_LOADED_CLASS__')) { require _XE_PATH_ . $GLOBALS['__xe_autoload_file_map'][$class_name]; } + elseif(preg_match('/^([a-z0-9_]+?)(admin)?(view|controller|model|api|wap|mobile)?$/i', $class_name, $matches)) + { + $candidate_filename = 'modules/' . $matches[1] . '/' . $matches[1] . ($matches[2] ? '.admin' : '') . ($matches[3] ? ('.' . $matches[3]) : '.class') . '.php'; + if(file_exists(_XE_PATH_ . $candidate_filename)) + { + require _XE_PATH_ . $candidate_filename; + } + } } spl_autoload_register('__xe_autoload');