分享

[框架] 目录结构

[复制链接]

目录结构

发表于 2020-1-5 09:38:47 来自 框架 阅读模式 倒序浏览
1859 0 查看全部
下面是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                          腾讯互联
│              ├── 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中有这样一段代码:
if(function_exists('spl_autoload_register')) {
        spl_autoload_register(array('core', 'autoload'));
} else {
        function __autoload($class) {
                return core::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,仅为方便使用,代码如下
    class C extends core {}
    class DB extends discuz_database {}

回复

使用道具 举报

游客~
懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 鲸云论坛

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4