Discuz X3.2源码解析 论坛模块(forum.php)

2025-04-23 08:47:53

论坛的主页面为forum.php,论坛的各个功能都以此为入口,然后请求参数mod指定子模块。

forum.php 的代码并不多,结构简单。里面引用了两个文件./source/class/class_core.php 和./source/function/function_forum.php。

Discuz X3.2源码解析 论坛模块(forum.php)

class_core.php 封装了discuz_application,封装了discuz运行环境的初始化工作。(后面专门讨论这个)

function_forum.php 里面基本都是与论坛相关的各个功能。

$modarray 、 $modcachelist定义了各个子模块的名称。

之后就是discuz_appclication(即C::app())的构建和初始化工作。在app初始化之后,开加载forum,加载论坛的主框架。然后是rss授权的,之后是运行钩子,可以理解为加载钩子。

最后require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php'; 来把请求交给子模块来处理。代码如下图,有注释。

Discuz X3.2源码解析 论坛模块(forum.php)

从forum.php来看,对discuz基本运行环境就行了封装,封装为C::app()。但对forum来说,依然是代码式、函数式的。既然模块都划分处理了,完全可以定义一个forum的模块类,然后实例化来处理请求。

类似于class forum extends module{} ,然后所有的事情都交由forum来处理即可,如果想重构,这倒是个不错的思路。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢