频道栏目
首页 > 程序开发 > Web开发 > PHP教程 > 开源程序 > discuz > 正文
discuz x代码文件分析
2016-01-07 16:04:38           
收藏   我要投稿
目录结构
下面是Discuz! 的文件目录及对应的描述。日常的开发中主要会涉及到source和template目录。
虽然目录和文件都很多,但是实际上结构还是很清晰,大多数情况下通过文件名和目录就能知道某个文件的作用。比如:
\source\class\discuz\discuz_censor.php用来处理敏感词过滤的类
\source\function\function_credit.php处理积分操作的函数库
\source\module\forum\forum_viewthread.php处理帖子显示页面的模块

另外,source目录下的class、function、module、include、admincp这几个文件夹下的程序文件命名要遵守如下规则:文件名前缀为所在目录的名字加上下划线(_) 目录结构详细:
/┬──api外部接口
│├──connect腾讯互联
│├──dbUCenter数据库备份接口
│├──googleGoogle引擎使用
│├──javascript数据和广告的JS调用
│├──manyoumanyou应用及搜索等相关服务
│└──trade在线支付接口
├──archiver论坛静态化
├──config站点配置文件
├──data数据缓存及附件
│├──attachment上传的文件目录
││├──album相册专用
││├──blockDIY专用
││├──common公共上传
││├──forum论坛附件专用
││├──group群组图标和头部图片专用
││├──portal门户上传文件专用
││├──profile个人资料专用
││└──temp临时文件
│├──avatar视频认证专用
│├──backup站点数据备份
│├──cache数据缓存
│├──diyDIY模块缓存
│├──ipdataDiscuz!IP库
│├──log站点日志,前/后台管理日志、错误日志等
│├──plugindata插件缓存数据
│├──template模板缓存目录
│└──threadcache帖子缓存
├──install安装目录
├──source代码主目录
│├──admincp后台程序
││├──cloudDiscuz!云平台
││├──menu菜单
││└──moderate审核功能
│├──archiver论坛静态化功能代码
│├──class类文件目录
││├──adv站点广告功能
││├──blockDIY模块功能文件
││├──cache缓存类
││├──db数据库类
││├──discuzdiscuz类
││├──forum论坛
││├──helper存放从function_core分离出来的一部分函数
││├──lib工具类的集合类
││├──magic道具
││├──memory内存类
││├──secqaa验证问答
││├──table数据表操作类
││└──task站点任务功能
│├──function函数文件
││└──cache缓存功能拆分目录
│├──include被包含的文件
││├──collection淘帖
││├──cron计划任务
││├──misc杂项
││├──modcp前台论坛管理
││├──portalcp前台门户管理
││├──post帖子相关
││├──search搜索功能
││├──space家园和个人相关功能
││├──spacecp个人设置相关
││├──table编码转换数据
││├──thread查看主题相关
││└──topicadmin前台主题管理
│├──language站点语言包
││├──adv广告
││├──blockDIY模块
││├──forum论坛
││├──group群组
││├──home家园
││├──magic道具
││├──member登录注册页面语言
││├──mobile手机访问功能语言
││├──portal门户语言
││├──ranklist排行榜语言
││├──search搜索
││├──secqaa安全问答
││├──tag标签
││├──task任务
││└──userappmanyou应用
│├──module功能模块
││├──connect腾讯互联
││├──forum论坛
││├──group群组
││├──home家园
││├──member登录注册
││├──misc杂项
││├──portal门户
││├──search搜索
││└──userapp应用
│└──plugin插件目录
│├──cloudstatDiscuz!云平台
│├──myappManyou应用
│├──myrepeats马甲功能
│├──qqconnect腾讯互联
│└──soso_smilies腾讯搜搜表情
├──static非PHP文件
│├──image界面图片
│├──js站点JS脚本
│├──space空间皮肤
│└──topic门户皮肤
├──template模板目录
│└──default默认风格
├──uc_clientUCenter客户端程序
└──uc_serverUCenter服务端程序

自动加载
Discuz! X2.5要求PHP版本大于5.1,抛弃了对PHP4的支持,因此支持更多的PHP新特性,自动加载类文件就是其中一个。在class_core.php中有这样一段代码:
if(function_exists('spl_autoload_register')){
spl_autoload_register(array('core','autoload'));
}else{
function__autoload($class){
returncore::autoload($class);
}
}
当调用不存在的类的时候就会调用core::autoload方法来加载相应的类文件。所以我们在开发的过程中就要用到某个类的时候就不需要include或者require了。只要对应的类文件存在,并且命名符合规范,直接调用即可。

注意:产品中个别特殊类由于历史原因无法实现自动加载,需手动处理 include或require
class_core.php 流程控制的说明
class_core.php是入口启动文件,主要实现了以下功能:
注册 autoload 方法和异常处理方法
C::t 方法的实现:通过 C::t 方法来调用数据层对应表的对象来实现对数据的操作
memory 的初始化:主要由 discuz_memory 类来实现
创建 discuz_application 实例 ( discuz_application 是原来 discuz! X2 的 discuz_core):进行核心的初始化操作,主要有加载配置文件、加载环境变量、连接数据库、加载setting信息、初始化用户数据、 session的初始、计划任务等
简写类的映射:将 class core 映射为 C,discuz_database 映射为 DB,仅为方便使用,代码如下
classCextendscore{}
classDBextendsdiscuz_database{}
点击复制链接 与好友分享!回本站首页
相关TAG标签 代码 文件
上一篇:优化discuz x系统执行效率
下一篇:Discuz x安装:在ucenter中添加新应用详细图文教程
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站