支持模块映射

增加公共模块支持
This commit is contained in:
ThinkPHP
2013-08-06 17:34:48 +08:00
parent 05a4811f21
commit 5f1623aa7d
2 changed files with 41 additions and 27 deletions

View File

@@ -25,28 +25,31 @@ class App {
static public function run() { static public function run() {
// 监听app_init // 监听app_init
Tag::listen('app_init'); Tag::listen('app_init');
// 加载全局初始化文件 if(Config::get('common_module')){
if(is_file( APP_PATH . 'init' . EXT)) { define('COMMON_PATH', APP_PATH . Config::get('common_module').'/');
include APP_PATH . 'init' . EXT; // 加载全局初始化文件
$config = Config::get(); if(is_file( COMMON_PATH . 'init' . EXT )) {
}else{ include COMMON_PATH . 'init' . EXT;
// 检测项目(或模块)配置文件 }else{
if(is_file(APP_PATH . 'config' . EXT)) { // 检测全局配置文件
$config = Config::set(include APP_PATH . 'config' . EXT); if(is_file(COMMON_PATH . 'config' . EXT)) {
} Config::set(include COMMON_PATH . 'config' . EXT);
// 加载别名文件 }
if(is_file(APP_PATH . 'alias' . EXT)) { // 加载全局别名文件
Loader::addMap(include APP_PATH . 'alias' . EXT); if(is_file(COMMON_PATH . 'alias' . EXT)) {
} Loader::addMap(include COMMON_PATH . 'alias' . EXT);
// 加载公共文件 }
if(is_file( APP_PATH . 'common' . EXT)) { // 加载全局公共文件
include APP_PATH . 'common' . EXT; if(is_file( COMMON_PATH . 'common' . EXT)) {
} include COMMON_PATH . 'common' . EXT;
if(is_file(APP_PATH . 'tags' . EXT)) { }
// 行为扩展文件 if(is_file(COMMON_PATH . 'tags' . EXT)) {
Tag::import(include APP_PATH . 'tags' . EXT); // 全局行为扩展文件
Tag::import(include COMMON_PATH . 'tags' . EXT);
}
} }
} }
// 应用URL调度 // 应用URL调度
self::dispatch($config); self::dispatch($config);
@@ -180,12 +183,23 @@ class App {
} }
// 获取模块名称 // 获取模块名称
define('MODULE_NAME', ucwords(strtolower(isset($_GET[$var_m]) ? $_GET[$var_m] : $config['default_module']))); $module = strtolower(isset($_GET[$var_m]) ? $_GET[$var_m] : $config['default_module']);
if($maps = Config::get('url_module_map')) {
if(isset($maps[$module])) {
// 记录当前别名
define('MODULE_ALIAS',$module);
// 获取实际的项目名
$module = $maps[MODULE_ALIAS];
}elseif(array_search($module,$maps)){
// 禁止访问原始项目
$module = '';
}
}
define('MODULE_NAME', ucwords($module));
// 模块初始化 // 模块初始化
if(MODULE_NAME && is_dir( APP_PATH . MODULE_NAME )) { if(MODULE_NAME && Config::get('common_module') != MODULE_NAME && is_dir( APP_PATH . MODULE_NAME )) {
define('MODULE_PATH', APP_PATH . MODULE_NAME . '/');
Tag::listen('app_begin'); Tag::listen('app_begin');
define('MODULE_PATH', APP_PATH . MODULE_NAME . '/');
// 加载模块初始化文件 // 加载模块初始化文件
if(is_file( MODULE_PATH . 'init' . EXT )) { if(is_file( MODULE_PATH . 'init' . EXT )) {
include MODULE_PATH . 'init' . EXT; include MODULE_PATH . 'init' . EXT;

View File

@@ -41,7 +41,7 @@ class ContentReplace {
$script_name = rtrim($_SERVER['SCRIPT_NAME'],'/'); $script_name = rtrim($_SERVER['SCRIPT_NAME'],'/');
} }
define('ROOT_URL', rtrim(dirname(str_replace("\\","\/",$script_name)),'/')); define('ROOT_URL', rtrim(dirname(str_replace("\\","\/",$script_name)),'/'));
define('MODULE_URL', ROOT_URL.(Config::get('require_module')?'/'.MODULE_NAME:'')); define('MODULE_URL', ROOT_URL.(Config::get('require_module')?'/'.(defined('MODULE_ALIAS')?MODULE_ALIAS:MODULE_NAME):''));
define('CONTROLLER_URL', MODULE_URL.(Config::get('require_controller')?'/'.CONTROLLER_NAME:'')); define('CONTROLLER_URL', MODULE_URL.(Config::get('require_controller')?'/'.CONTROLLER_NAME:''));
define('ACTION_URL', CONTROLLER_URL.'/'.ACTION_NAME); define('ACTION_URL', CONTROLLER_URL.'/'.ACTION_NAME);