您现在的位置是:首页 > 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的架构不好,当时想毕竟使用这么广泛、发展这么久的系统,应该不至于架构不好吧,要不怎么能够持续这么久的改进呢。
现在看来,架构还真的是不敢恭维。想从里面学习架构的东西,感觉是有点难喽。
本文标签:
很赞哦! ()
相关教程
图文教程
Powershell实践Discuz!NT自动打包发布
最近喜欢上了Powershell,由于本人向来懒惰,遂将日常工作中一些琐碎的,重复的事情用powershell来做了。为此某不才,读了PowerShell自带的
Discuz的authcode函数注释
Discuz函数中最经典的函数是authcode函数,因为supesite,UCenterHome,UCenter,Discuz X都使用了这个函数进行加密
Discuz NT相册查看插件开发实例
现在把他整合在Discuz NT 的相册程序中.下面介绍一下实现方法. 貌似太简单了点.然后在discuz NT网站的根目录下新建一个文件夹来放highslide库, 我这里是命名为static
提取DISCUZ.NET3.1视频抓取头像的方法
最近做的项目,需要把客户的照片现场抓取,在网上搜了好久,发现一些通过ACTIVEX实现的方法都很复杂,由于项目的时间限制,之后决定使用FLASH 方式抓取头像
相关源码
-
(自适应响应式)HTML5简繁双语电子元器件设备制造Pbootcms模板下载本模板为电子科技设备制造、电子元件生产等高科技企业设计,采用PbootCMS内核开发,具备简繁双语切换功能。模板设计充分考虑了电子科技行业的技术展示需求,能够专业呈现各类电子元器件、电路板、智能设备的参数规格和应用方案。查看源码 -
帝国cms7.5自适应作文新闻资讯教育网站模板本模板基于帝国CMS7.5内核开发,为教育机构、培训学校等知识传播单位打造。通过自适应设计确保在手机、平板、电脑等设备上均能获得专业浏览体验查看源码 -
(自适应)英文外贸电子设备网站模板三级子目录基于PbootCMS内核开发的响应式英文网站模板,为外贸企业打造,支持多行业快速适配。通过简洁高效的代码架构,帮助企业低成本构建专业海外形象,实现更好客户触达与订单转化。查看源码 -
(PC+WAP)绿色资源回收新能源环保设备pbootcms源码下载基于PbootCMS系统深度开发的环保行业模板,特别适配资源回收设备、新能源技术、环境治理装备等企业的线上展示需求。集成产品库、解决方案、环保案例等专业模块,助力企业高效传递绿色价值。查看源码 -
(自适应)蓝色自动溶剂萃取仪器设备类网站pbootcms模板下载本模板为溶剂萃取设备、实验室仪器等精密仪器行业设计,采用PbootCMS内核开发,具有高度专业性和行业适配性。模板设计充分考虑了仪器设备行业展示需求,能够呈现各类精密仪器的技术参数、应用场景和解决方案。查看源码 -
(PC+WAP)楼承板建筑工程合金钢铁材料pbootcms网站源码下载为楼承板生产商及建筑工程企业设计的响应式网站模板,采用PbootCMS内核开发,同步适配电脑与移动设备浏览。通过模块化结构展示工程案例、产品参数等专业内容,帮助建筑建材企业建立标准化数字展示平台,提升行业专业形象。查看源码
| 分享笔记 (共有 篇笔记) |
