您现在的位置是:首页 > 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的手机模板中,需要切换收藏和取消收藏。取消收藏,需要找到forum/viewthread.htm 、forum/viewthread_node.htm 模板
discuz目录作用说明
uc.php UCenter 通信文件|-- /api/addons 应用中心|-- /api/connect 腾讯互联|-- /api/google Google 引擎接口处理|-- /api/javascript 数据和广告的 JS调用
discuz函数库function_core注释
根据uid 获取用户基本数据 @staticvar array $users 存放已经获取的用户的信息,避免重复查库获取当前用户的扩展资料@param $field 字段
discuz!ml-3.x版本getshell漏洞分析
漏洞原因:Discuz!ML 系统对cookie中的l接收的language参数内容未过滤,导致字符串拼接,从而执行php代码。1.cookie字段中会出现xxxx_xxxx_language字段
相关源码
-
帝国cms7.5自适应手机端在线课程教育网站源码基于帝国CMS后台管理系统,支持在线修改支付参数、联系方式等配置信息,操作界面直观便捷。专注于在线教育视频领域,提供完整的视频课程展示、付费购买及在线支付解决方案。支持多种支付渠道,满足教育培训机构的运营需求。查看源码 -
(PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码 -
(自适应HTML5)响应式智能设备人工智能机器pbootcms源码免费下载这款基于PbootCMS开发的网站模板为人工智能和智能设备行业设计,采用现代化科技风格,突出产品的智能特性和技术创新。模板架构合理,功能完善,能够有效展示各类智能产品的核心功能和解决方案。查看源码 -
(PC+WAP)蓝色钢材加工建筑装修施工材料网站模板下载为钢材加工企业设计的PbootCMS响应式模板,采用PC+WAP双端适配技术,数据实时同步。简洁大气的蓝色工业风格设计,突出钢材加工行业特性,其他制造业用户更换图文内容即可快速应用。查看源码 -
(PC+WAP)红色厨具厨房用品设备pbootcms模板源码下载为厨具设备企业设计的响应式网站模板,采用PbootCMS内核开发,适用于商用厨房设备、家用厨具、厨房用品等企业展示。模板包含产品展示、新闻动态、案例中心等标准模块,助您快速搭建专业级行业网站。查看源码 -
(自适应)html5导航目录索引工具类网站源码下载本模板基于PbootCMS开发,为站长导航、网址导航类网站设计。采用HTML5+CSS3技术构建,适配PC端和移动端,提供流畅的浏览体验。适用于个人站长、资源导航平台等场景查看源码
| 分享笔记 (共有 篇笔记) |
