好友团

24小时服务电话

134-2860-6060

查看: 566|回复: 0

[图文教程] Discuz! 产品框架

[复制链接]
发表于 2017-5-27 15:58:26 | 显示全部楼层 |阅读模式
填写您的邮件地址,订阅我们的精彩内容:
[受理编号:SL-2549]
填写您的邮件地址,订阅我们的精彩内容:
下面是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这几个文件夹下的程序文件命名要遵守如下规则:文件名前缀为所在目录的名字加上下划线(_)
目录结构详细:
  1. /┬── api 外部接口
  2. │      ├── connect        腾讯互联
  3. │      ├── db        UCenter数据库备份接口
  4. │      ├── google        Google引擎使用
  5. │      ├── javascript        数据和广告的 JS调用
  6. │      ├── manyou        manyou应用及搜索等相关服务
  7. │      └── trade        在线支付接口
  8. ├── archiver        论坛静态化
  9. ├── config        站点配置文件
  10. ├── data        数据缓存及附件
  11. │      ├── attachment        上传的文件目录
  12. │      │      ├── album        相册专用
  13. │      │      ├── block        DIY专用
  14. │      │      ├── common        公共上传
  15. │      │      ├── forum        论坛附件专用
  16. │      │      ├── group        群组图标和头部图片专用
  17. │      │      ├── portal        门户上传文件专用
  18. │      │      ├── profile        个人资料专用
  19. │      │      └── temp        临时文件
  20. │      ├── avatar        视频认证专用
  21. │      ├── backup        站点数据备份
  22. │      ├── cache        数据缓存
  23. │      ├── diy        DIY模块缓存
  24. │      ├── ipdata        Discuz!IP库
  25. │      ├── log        站点日志,前/后台管理日志、错误日志等
  26. │      ├── plugindata        插件缓存数据
  27. │      ├── template        模板缓存目录
  28. │      └── threadcache        帖子缓存
  29. ├── install 安装目录
  30. ├── source 代码主目录
  31. │      ├── admincp        后台程序
  32. │      │      ├── cloud        Discuz!云平台
  33. │      │      ├── menu        菜单
  34. │      │      └── moderate        审核功能
  35. │      ├── archiver        论坛静态化功能代码
  36. │      ├── class        类文件目录
  37. │      │      ├── adv        站点广告功能
  38. │      │      ├── block        DIY模块功能文件
  39. │      │      ├── cache        缓存类
  40. │      │      ├── db        数据库类
  41. │      │      ├── discuz        discuz类
  42. │      │      ├── forum        论坛
  43. │      │      ├── helper        存放从function_core分离出来的一部分函数
  44. │      │      ├── lib        工具类的集合类
  45. │      │      ├── magic        道具
  46. │      │      ├── memory        内存类
  47. │      │      ├── secqaa        验证问答
  48. │      │      ├── table        数据表操作类
  49. │      │      └── task        站点任务功能
  50. │      ├── function        函数文件
  51. │      │      └── cache        缓存功能拆分目录
  52. │      ├── include        被包含的文件
  53. │      │      ├── collection        淘帖
  54. │      │      ├── cron        计划任务
  55. │      │      ├── misc        杂项
  56. │      │      ├── modcp        前台论坛管理
  57. │      │      ├── portalcp        前台门户管理
  58. │      │      ├── post        帖子相关
  59. │      │      ├── search        搜索功能
  60. │      │      ├── space        家园和个人相关功能
  61. │      │      ├── spacecp        个人设置相关
  62. │      │      ├── table        编码转换数据
  63. │      │      ├── thread        查看主题相关
  64. │      │      └── topicadmin        前台主题管理
  65. │      ├── language        站点语言包
  66. │      │      ├── adv        广告
  67. │      │      ├── block        DIY模块
  68. │      │      ├── forum        论坛
  69. │      │      ├── group        群组
  70. │      │      ├── home        家园
  71. │      │      ├── magic        道具
  72. │      │      ├── member        登录注册页面语言
  73. │      │      ├── mobile        手机访问功能语言
  74. │      │      ├── portal        门户语言
  75. │      │      ├── ranklist        排行榜语言
  76. │      │      ├── search        搜索
  77. │      │      ├── secqaa        安全问答
  78. │      │      ├── tag        标签
  79. │      │      ├── task        任务
  80. │      │      └── userapp        manyou应用
  81. │      ├── module        功能模块
  82. │      │      ├── connect        腾讯互联
  83. │      │      ├── forum        论坛
  84. │      │      ├── group        群组
  85. │      │      ├── home        家园
  86. │      │      ├── member        登录注册
  87. │      │      ├── misc        杂项
  88. │      │      ├── portal        门户
  89. │      │      ├── search        搜索
  90. │      │      └── userapp        应用
  91. │      └── plugin        插件目录
  92. │              ├── cloudstat        Discuz!云平台
  93. │              ├── myapp        Manyou应用
  94. │              ├── myrepeats        马甲功能
  95. │              ├── qqconnect        腾讯互联
  96. │              └── soso_smilies        腾讯搜搜表情
  97. ├── static        非PHP文件
  98. │      ├── image        界面图片
  99. │      ├── js        站点JS脚本
  100. │      ├── space        空间皮肤
  101. │      └── topic        门户皮肤
  102. ├── template        模板目录
  103. │      └── default        默认风格
  104. ├── uc_client        UCenter客户端程序
  105. └── 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,仅为方便使用,代码如下
    1. class C extends core {}
    2. class DB extends discuz_database {}
    复制代码


回复
〖销售站〗一站式品质服务平台. 一体化商城系统.【www.xiaoshouzhan.com】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

销售站-一体化商城系统!
 
 
Q Q|技术部
销售|销售部
客服|销售站实体店
分流|销售站实体店
视频解析群:
好记吧
产品售后群:
站长源码(交易平台)
域名拍卖群:
域名拍卖群
产品维权群:
藤县站
微信客服中心:
/images/niwota00000000300.jpg
工作时间:
8:00-18:00
 
版权所有:好友团

QQ|关于我们|手机版|( 桂ICP备19008987号|网站地图  | Sponsor: Friends group