您现在的位置是:首页 > 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的架构不好,当时想毕竟使用这么广泛、发展这么久的系统,应该不至于架构不好吧,要不怎么能够持续这么久的改进呢。
现在看来,架构还真的是不敢恭维。想从里面学习架构的东西,感觉是有点难喽。
本文标签:
很赞哦! ()
相关教程
图文教程
php使用curl模拟登录discuz模拟发帖的实现方法
php的curl真的是相当好用,网上一搜索相关文章都是关于curl模拟登陆的,很少人提供模拟discuz发贴的源码。
Discuz数据库表参数说明
Discuz的基础架构采用世界上很流行的web编程组合PHP+MySQL实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。作为国内较大的社区软件及服务提供商
Discuz! X3数据表、数据字段说明文档列表查询
pre_common_admincp_cmenu 后台菜单收藏表;pre_common_admincp_group 后台管理组;pre_common_admincp_member 后台管理成员;pre_common_admincp_perm 后台权限表
Discuz附件上传失败或大小受限的解决方法
在使用Discuz论坛时,常常会遇到附件上传失败或者文件大小受限的问题,这不仅影响用户体验,还可能导致内容无法有效传播。通过这篇文章,我们将深入探讨Discuz附件上传的常见问题
相关源码
-
响应式艺考培训学校机构pbootcms模板html5源码基于PbootCMS免费开源内核开发,为艺考培训学校与艺术机构设计,替换图文即可快速适配全行业需求。响应式布局兼容手机/PC端,数据实时同步,运维效率提升300%。查看源码 -
pbootcms(自适应)SEO优化排名服务公司网站模板核心定位为SEO排名服务商打造的营销型网站框架,集成PbootCMS开源系统的高效管理能力与SEO最佳实践方案,助力企业快速建立专业的技术服务形象。查看源码 -
WordPress主题模板主题巴巴/博客X主题源码免费下载博客X主题专注于内容创作领域,为博客、资讯类网站提供专业的内容展示解决方案。该模板采用精心设计的布局结构,能够有效提升内容的可读性和用户停留时间。查看源码 -
(自适应响应式)高新技术科技能源pbootcms网站HTML5模板本模板基于PbootCMS内核开发,为高新技术、科技研发、能源技术等科技型企业设计。采用HTML5+CSS3前沿技术,具备完善的响应式布局,能够自动适配手机、平板和电脑等多种终端设备。模板设计风格简约大气查看源码 -
(自适应响应式)英文外贸医疗科研耗材设备pbootcms网站模板为医疗设备和外贸企业设计的响应式网站模板,基于PbootCMS系统开发。突出医疗产品认证展示和国际化特性,通过专业化的产品参数展示模块和文档管理系统,满足医疗行业严格的信息披露要求。查看源码 -
(自适应HTML5)响应式智能设备人工智能机器pbootcms源码免费下载这款基于PbootCMS开发的网站模板为人工智能和智能设备行业设计,采用现代化科技风格,突出产品的智能特性和技术创新。模板架构合理,功能完善,能够有效展示各类智能产品的核心功能和解决方案。查看源码
| 分享笔记 (共有 篇笔记) |
