对discuz的代码分析学习----论坛入口文件(转帖)
2018-01-28 16:30
363 查看
只是大致分析下执行流程,主要就是取得mod参数的值,根据取值加载控制器,控制器位置在最后一行指定了。
1 )定义应用名称,加载两个必要文件
2 )modarray数组限定了mod取值范围
3 )如果mod参数为空或者不合法都会让表达式为真,导致值为index
4 )做初始化
5 )加载控制器
1 )定义应用名称,加载两个必要文件
define('APPTYPEID', 2); define('CURSCRIPT', 'forum'); require './source/class/class_core.php';//核心类 require './source/function/function_forum.php';//论坛函数库
2 )modarray数组限定了mod取值范围
$modarray = array('ajax','announcement','attachment','forumdisplay', 'group','image','index','medal','misc','modcp','notice','post','redirect', 'relatekw','relatethread','rss','topicadmin','trade','viewthread','tag','collection','guide' ); //模块缓存列表,各个子数组分别表示各个模块要缓存的缓存项 $modcachelist = array( 'index' => array('announcements', 'onlinelist', 'forumlinks', 'heats', 'historyposts', 'onlinerecord', 'userstats', 'diytemplatenameforum'), 'forumdisplay' => array('smilies', 'announcements_forum', 'globalstick', 'forums', 'onlinelist', 'forumstick', 'threadtable_info', 'threadtableids', 'stamps', 'diytemplatenameforum'), 'viewthread' => array('smilies', 'smileytypes', 'forums', 'usergroups', 'stamps', 'bbcodes', 'smilies', 'custominfo', 'groupicon', 'stamps', 'threadtableids', 'threadtable_info', 'posttable_info', 'diytemplatenameforum'), 'redirect' => array('threadtableids', 'threadtable_info', 'posttable_info'), 'post' => array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes', 'domainwhitelist', 'albumcategory'), 'space' => array('fields_required', 'fields_optional', 'custominfo'), 'group' => array('grouptype', 'diytemplatenamegroup'), );
3 )如果mod参数为空或者不合法都会让表达式为真,导致值为index
$mod = !in_array(C::app()->var['mod'], $modarray) ? 'index' : C::app()->var['mod'];
4 )做初始化
define('CURMODULE', $mod); //var_dump(CURMODULE); $cachelist = array(); if(isset($modcachelist[CURMODULE])) {//如果当前缓存项存在的话, $cachelist = $modcachelist[CURMODULE];//获取当前缓存组的缓存列表项 $cachelist[] = 'plugin'; $cachelist[] = 'pluginlanguage_system'; } if(C::app()->var['mod'] == 'group') { $_G['basescript'] = 'group'; } C::app()->cachelist = $cachelist; C::app()->init();//初始化 loadforum(); set_rssauth(); runhooks();
5 )加载控制器
$navtitle = str_replace('{bbname}', $_G['setting']['bbname'], $_G['setting']['seotitle']['forum']); $_G['setting']['threadhidethreshold'] = 1; //var_dump($mod); require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';
相关文章推荐
- 对discuz的代码分析学习(四)论坛入口文件
- 对discuz的代码分析学习————首页文件(转自陈)
- 对discuz的代码分析学习----mysql驱动(转帖)
- Discuz!NT论坛代码小分析【转】
- discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现
- 管理Discuz!代码分析的收集整理[2][文件功能]
- Dive Into Python 学习记录3-对获取某文件夹下MP3文件信息的代码构成分析
- Discuz!NT论坛代码小分析
- DZ论坛横排美化,代码详细分析[Discuz 7.0]
- discuz入口文件index.php的思想分析
- discuz学习记录:最基本的入口、控制、模板3个文件
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) 转自CSDN:gushenghua的专栏
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象)
- 学习工作中的一个PHP文件下载代码
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理)
- Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
- Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
- 【学习逆向工程,分析机器代码】(二)(C++篇)
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象)
- 利用ADODB写文件——恶意文件young.gif代码的分析心得1