您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz X3.2源码分析discuz_application类介绍
庄蒙少2025-07-04Discuz教程已有人查阅
导读discuz_application主要实现对运行环境、配置、输入、输出、数据库、设置、用户、session、移动模块、计划任务、手机预览等方面的初始化。
discuz_application在/source/class/discuz/discuz_application.php中。
discuz_application继承自抽象类discuz_base
discuz_application主要实现对运行环境、配置、输入、输出、数据库、设置、用户、session、移动模块、计划任务、手机预览等方面的初始化。
instance()函数来示例化discuz_application, 构造函数中
在init()函数中又进行一部分初始化
discuz_application实例化后,设置var['mod']和cachelist 之后,才可以调用init()函数。
其实这里把mod和cachelist设计为discuz_application构造函数参数即可,然后用一个init()函数完成初始化即可。
个人的感觉/forum.php中改成这种模式应该更好
此外还有一个不好的地方/source/class/class_core.php 中的core包装了discuz_application的实例化,而改文件又声明了一个DB对discuz_database的映射。 而在discuz_application的数据库初始化函数_init_db()中使用DB, 导致两个文件相互引用依赖,这也是导致discuz_application的初始化一部分在构造函数中,一部分在init()函数中的原因之一。
6,之前看到有人评论discuz的架构不好,当时想毕竟使用这么广泛、发展这么久的系统,应该不至于架构不好吧,要不怎么能够持续这么久的改进呢。
现在看来,架构还真的是不敢恭维。想从里面学习架构的东西,感觉是有点难喽。
discuz_application继承自抽象类discuz_base
discuz_application主要实现对运行环境、配置、输入、输出、数据库、设置、用户、session、移动模块、计划任务、手机预览等方面的初始化。
instance()函数来示例化discuz_application, 构造函数中
public function __construct() {
$this->_init_env();
$this->_init_config();
$this->_init_input();
$this->_init_output();
}
初始化了运行环境、系统配置、输入、输出。在init()函数中又进行一部分初始化
public function init() {
if(!$this->initated) {
$this->_init_db();
$this->_init_setting();
$this->_init_user();
$this->_init_session();
$this->_init_mobile();
$this->_init_cron();
$this->_init_misc();
}
$this->initated = true;
}
单纯看这个代码,会让人很疑惑,为什么初始化操作不放在一块呢,分成功两个函数。这个时候看下/forum.php中的代码(如图)就明白了。discuz_application实例化后,设置var['mod']和cachelist 之后,才可以调用init()函数。
其实这里把mod和cachelist设计为discuz_application构造函数参数即可,然后用一个init()函数完成初始化即可。
个人的感觉/forum.php中改成这种模式应该更好
C::app()->var['mod'] = mod;
C::app()->cachelist = $cachelist;
C::app()->init();
f = new forum(C::app())
f.doSomething()
这样子代码简练易懂易改易扩展。此外还有一个不好的地方/source/class/class_core.php 中的core包装了discuz_application的实例化,而改文件又声明了一个DB对discuz_database的映射。 而在discuz_application的数据库初始化函数_init_db()中使用DB, 导致两个文件相互引用依赖,这也是导致discuz_application的初始化一部分在构造函数中,一部分在init()函数中的原因之一。
6,之前看到有人评论discuz的架构不好,当时想毕竟使用这么广泛、发展这么久的系统,应该不至于架构不好吧,要不怎么能够持续这么久的改进呢。
现在看来,架构还真的是不敢恭维。想从里面学习架构的东西,感觉是有点难喽。
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz管理员前台可以登录后台无法登录怎么办
Discuz管理员前台可以登录后台无法登录的解决方法步骤如下1. 取消ip认证2.管理员用户组变为普通用户组了 进入不了后台3. 后台设置了ip列表导致访问不了后台
Discuz解决安装时报错run_sql_error的方法
本文实现功能解决在MySQL8.0安装discuz报错run_sql_error如果想直接看解决结果,直接去看解决问题目录
ecshop整合discuz的方法
实际应用背景:网站使用ecshop已经有一段时间,积累了一些用户,discuz是新装.希望把ecshop的用户导入discuz,并能实现同步登录。
IIS部署discuz论坛的步骤方法
首先,IIS要部署php项目,需要CgiModule模块的支持,所以首先我们要确认这个模块是否存在打开IIS管理器:
相关源码
-
帝国cms7.5奇闻异事末解之谜模板免费下载带数据本模板基于帝国CMS7.5系统开发,为神秘现象、未解之谜类主题网站设计。包含完整的PC端、移动端及百度MIP站同步生成功能,内置火车头采集规则模块,可快速采集目标站内容资源。整体设计风格神秘大气,符合主题定位。查看源码 -
(PC+WAP)绣花刺绣传统手工工艺pbootcms网站源码下载这款基于PbootCMS的网站模板为刺绣和传统手工艺行业设计,采用优雅的布局和精致的细节处理,能够呈现手工艺品的独特韵味和文化内涵。模板结构合理,功能完善,是手工艺从业者展示作品的理想选择。查看源码 -
(自适应响应式)绿色环保防腐木材轻钢别墅建材pbootcms模板下载本模板为环保防腐木材、轻钢别墅建材类企业设计开发,基于PbootCMS内核构建,充分考虑了建材行业的展示需求与产品特点。模板设计风格自然环保,布局清晰合理,呈现建材产品特性与专业优势,帮助访客直观了解产品特点并建立信任感。查看源码 -
自适应极简风个人博客文章自媒体网站模板基于PbootCMS开源内核开发的极简个人博客模板,采用移动优先设计原则,通过Media Query技术实现320px至1920px六级分辨率适配,确保在手机、平板及PC设备上均呈现良好的视觉体验。查看源码 -
(自适应)餐饮小吃火锅加盟pbootcms模板源码下载本模板基于PbootCMS系统开发,为火锅餐饮、小吃加盟等餐饮企业打造。采用响应式设计,适配各类移动设备,帮助餐饮企业展示特色菜品、加盟政策和服务优势。查看源码 -
(自适应响应式)pbootcms紫色美容整形机构企业模板下载基于PbootCMS内核开发的响应式网站模板,为医疗美容机构、整形医院等企业设计,提供完整的线上展示平台采用紫色系配色方案,整体风格专业大气。模板包含首页轮播、服务项目、专家团队、案例展示等核心模块,能够充分展示医疗美容机构的专业服务和特色优势。查看源码
| 分享笔记 (共有 篇笔记) |
