找回密码
 亲,注册吧

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

查看: 21710|回复: 583

一、Discuz x2.5 产品框架

[复制链接]
发表于 2013-12-23 23:58:57 | 显示全部楼层 |阅读模式
本帖最后由 花花公子 于 2013-12-24 00:02 编辑

目录结构
下面是Discuz! 的文件目录及对应的描述。日常的开发中主要会涉及到source和template目录。虽然目录和文件都很多,但是实际上结构还是很清晰,大多数情况下通过文件名和目录就能知道某个文件的作用。比如:
  1. \source\class\discuz\discuz_censor.php 用来处理敏感词过滤的类
  2. \source\function\function_credit.php 处理积分操作的函数库
  3. \source\module\forum\forum_viewthread.php 处理帖子显示页面的模块
复制代码


另外,source目录下的class、function、module、include、admincp这几个文件夹下的程序文件命名要遵守如下规则:文件名前缀为所在目录的名字加上下划线(_)
目录结构详细:

/┬── api 外部接口
│      ├── connect   腾讯互联
│      ├── db        UCenter数据库备份接口
│      ├── google    Google引擎使用
│      ├── javascript         数据和广告的 JS调用
│      ├── manyou    manyou应用及搜索等相关服务
│      └── trade     在线支付接口
├── archiver 论坛静态化
├── config   站点配置文件
├── data     数据缓存及附件
│      ├── attachment         上传的文件目录
│      │      ├── album      相册专用
│      │      ├── block      DIY专用
│      │      ├── common     公共上传
│      │      ├── forum      论坛附件专用
│      │      ├── group      群组图标和头部图片专用
│      │      ├── portal     门户上传文件专用
│      │      ├── profile    个人资料专用
│      │      └── temp       临时文件
│      ├── avatar    视频认证专用
│      ├── backup    站点数据备份
│      ├── cache     数据缓存
│      ├── diy       DIY模块缓存
│      ├── ipdata    Discuz!IP
│      ├── log       站点日志,前/后台管理日志、错误日志等
│      ├── plugindata         插件缓存数据
│      ├── template  模板缓存目录
│      └── threadcache        帖子缓存
├── install 安装目录
├── source 代码主目录
│      ├── admincp   后台程序
│      │      ├── cloud      Discuz!云平台
│      │      ├── menu       菜单
│      │      └── moderate   审核功能
│      ├── archiver  论坛静态化功能代码
│      ├── class     类文件目录
│      │      ├── adv        站点广告功能
│      │      ├── block      DIY模块功能文件
│      │      ├── cache      缓存类
│      │      ├── db         数据库类
│      │      ├── discuz     discuz
│      │      ├── 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        广告
│      │      ├── block      DIY模块
│      │      ├── forum      论坛
│      │      ├── group      群组
│      │      ├── home       家园
│      │      ├── magic      道具
│      │      ├── member     登录注册页面语言
│      │      ├── mobile     手机访问功能语言
│      │      ├── portal     门户语言
│      │      ├── ranklist   排行榜语言
│      │      ├── search     搜索
│      │      ├── secqaa     安全问答
│      │      ├── tag        标签
│      │      ├── task       任务
│      │      └── userapp    manyou应用
│      ├── module    功能模块
│      │      ├── connect    腾讯互联
│      │      ├── forum      论坛
│      │      ├── group      群组
│      │      ├── home       家园
│      │      ├── member     登录注册
│      │      ├── misc       杂项
│      │      ├── portal     门户
│      │      ├── search     搜索
│      │      └── userapp    应用
│      └── plugin    插件目录
│              ├── cloudstat  Discuz!云平台
│              ├── myapp      Manyou应用
│              ├── myrepeats  马甲功能
│              ├── qqconnect  腾讯互联
│              └── soso_smilies        腾讯搜搜表情
├── static   非PHP文件
│      ├── image     界面图片
│      ├── js        站点JS脚本
│      ├── space     空间皮肤
│      └── topic     门户皮肤
├── template 模板目录
│      └── default   默认风格
├── uc_client UCenter客户端程序
└── uc_server UCenter服务端程序

自动加载
Discuz! X2.5要求PHP版本大于5.1,抛弃了对PHP4的支持,因此支持更多的PHP新特性,自动加载类文件就是其中一个。在class_core.php中有这样一段代码:
  1. if(function_exists('spl_autoload_register')) {
  2. spl_autoload_register(array('core', 'autoload'));
  3. } else {
  4. function __autoload($class) {
  5. return core::autoload($class);
  6. }
  7. }
复制代码
当调用不存在的类的时候就会调用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,仅为方便使用,代码如下
class C extends core {}class DB extends discuz_database {}
该会员没有填写今日想说内容.

0

主题

1108

回帖

1144

积分

本科生

Rank: 4

积分
1144
发表于 2014-5-16 23:36:11 | 显示全部楼层
小手一抖,钱钱到手!
0 该用户已被删除
发表于 2014-5-17 13:55:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-5-17 21:28:42 | 显示全部楼层
谢谢楼主,共同发展
0 该用户已被删除
发表于 2014-5-18 19:23:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

311

回帖

312

积分

中学生

Rank: 3Rank: 3

积分
312
发表于 2014-5-19 12:02:10 | 显示全部楼层
支持一下:lol
0 该用户已被删除
发表于 2014-5-20 21:45:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-21 19:42:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

223

回帖

223

积分

小学生

Rank: 2

积分
223
发表于 2014-5-23 00:21:41 | 显示全部楼层
不错不错,楼主您辛苦了。。。
0 该用户已被删除
发表于 2014-5-23 18:02:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

1

主题

371

回帖

375

积分

中学生

Rank: 3Rank: 3

积分
375
发表于 2014-5-26 00:50:46 | 显示全部楼层
不错不错,楼主您辛苦了。。。

40

主题

574

回帖

762

积分

中学生

Rank: 3Rank: 3

积分
762
发表于 2014-5-26 13:15:00 | 显示全部楼层
我是来刷分的,嘿嘿
发表于 2014-5-27 01:02:07 | 显示全部楼层
有竞争才有进步嘛
0 该用户已被删除
发表于 2014-5-27 17:29:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-28 14:59:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-29 09:20:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-30 21:39:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-5-31 18:17:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-2 07:52:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-2 13:48:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-3 10:26:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

2

主题

366

回帖

393

积分

中学生

Rank: 3Rank: 3

积分
393
发表于 2014-6-4 07:39:55 | 显示全部楼层
没看完~~~~~~ 先顶,好同志

0

主题

225

回帖

226

积分

小学生

Rank: 2

积分
226
发表于 2014-6-4 10:34:15 | 显示全部楼层
帮帮顶顶!!

1

主题

1074

回帖

1127

积分

本科生

Rank: 4

积分
1127
发表于 2014-6-6 12:06:30 | 显示全部楼层
真是 收益 匪浅

2

主题

366

回帖

393

积分

中学生

Rank: 3Rank: 3

积分
393
发表于 2014-6-6 18:23:28 | 显示全部楼层
有道理。。。
发表于 2014-6-7 07:55:09 | 显示全部楼层
不错不错,楼主您辛苦了。。。
0 该用户已被删除
发表于 2014-6-7 17:56:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

292

回帖

293

积分

小学生

Rank: 2

积分
293
发表于 2014-6-8 23:22:51 | 显示全部楼层
沙发!沙发!
0 该用户已被删除
发表于 2014-6-9 11:52:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
0 该用户已被删除
发表于 2014-6-9 16:09:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 亲,注册吧 微信登录

本版积分规则

快速回复 返回顶部 返回列表