请选择 进入手机版 | 继续访问电脑版
查看: 158|回复: 0

Discuz系统运行基础文件discuz_application代码注释

[复制链接]

648

主题

650

帖子

3342

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3342
发表于 2021-10-15 08:54:58 | 显示全部楼层 |阅读模式
Discuz系统运行基础文件discuz_application代码注释
discuz_application 是Discuz系统运行的基础,前面提到过,这里来深入了解下。

1、discuz_application文件位置:discuz_application在/source/class/discuz/discuz_application.php中。
01.jpg

2、discuz_application继承自抽象类discuz_base
02.jpg

3、discuz_application主要实现对运行环境、配置、输入、输出、数据库、设置、用户、session、移动模块、计划任务、手机预览等方面的初始化。
03.jpg

4、instance()函数来示例化discuz_application, 构造函数中
  1. public function __construct() {
  2.         $this->_init_env();
  3.         $this->_init_config();
  4.         $this->_init_input();
  5.         $this->_init_output();
  6. }
复制代码

初始化了运行环境、系统配置、输入、输出。
在init()函数中又进行一部分初始化
  1. public function init() {
  2.         if(!$this->initated) {
  3.                 $this->_init_db();
  4.                 $this->_init_setting();
  5.                 $this->_init_user();
  6.                 $this->_init_session();
  7.                 $this->_init_mobile();
  8.                 $this->_init_cron();
  9.                 $this->_init_misc();
  10.         }
  11.         $this->initated = true;
  12. }
复制代码
单纯看这个代码,会让人很疑惑,为什么初始化操作不放在一块呢,分成功两个函数。这个时候看下/forum.php中的代码(如图)就明白了。
discuz_application实例化后,设置var['mod']和cachelist 之后,才可以调用init()函数。
其实这里把mod和cachelist设计为discuz_application构造函数参数即可,然后用一个init()函数完成初始化即可。
个人的感觉/forum.php中改成这种模式应该更好
  1. C::app()->var['mod'] = mod;
  2. C::app()->cachelist   = $cachelist;
  3. C::app()->init();
  4. f = new forum(C::app())
  5. f.doSomething()
复制代码
这样子代码简练易懂易改易扩展。
04.jpg

5、此外还有一个不好的地方/source/class/class_core.php 中的core包装了discuz_application的实例化,而改文件又声明了一个DB对discuz_database的映射。 而在discuz_application的数据库初始化函数_init_db()中使用DB, 导致两个文件相互引用依赖,这也是导致discuz_application的初始化一部分在构造函数中,一部分在init()函数中的原因之一。
05.jpg
06.jpg


6、之前看到有人评论discuz的架构不好,当时想毕竟使用这么广泛、发展这么久的系统,应该不至于架构不好吧,要不怎么能够持续这么久的改进呢。现在看来,架构还真的是不敢恭维。想从里面学习架构的东西,感觉是有点难喽。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|蓄财网 ( 豫ICP备2021002293号 )

GMT+8, 2021-11-29 22:59 , Processed in 0.105065 second(s), 35 queries .

蓄财网 ©版权所有

© 2021 蓄财网(www.aixc.cn)

快速回复 返回顶部 返回列表