您现在的位置是:首页 > cms教程 > discuz教程discuz教程
discuzX论坛技术架构MVC结构分析
书瑶2025-06-25 20:57:58discuz教程已有4人查阅
导读第一个文件相当于控制器(C),比如forum.php(根目录下,相当于大模块,应该再加上小模块控制 module),功能是将相应的请求发送到相应的逻辑处理模块
第一个文件相当于控制器(C),比如forum.php(根目录下,相当于大模块,应该再加上小模块控制module),功能是将相应的请求发送到相应的逻辑处理模块第二个文件就是业务逻辑处理如forum_post.php(source\module\forum\forum_post.php,Module相当于小模块、功能点),功能是帖子的发布处理在第二个文件当中再调用相应的函数库,处理模块业务如
第三个文件就是模板文件了(V),将获取到得数据填充到页面各模块分工明细,维护简单如果需要添加新的模块,可以仿造这种模式,而不会太复杂大致是这个样子的依我的理解,discuz的MVC结构是这样的:
Model即逻辑处理,应该是source/function,这里面的一些函数是对数据库(表对象class/table),缓存,内存,配置等一些的相关操作。
Control即控制器,应该是source/module对应相关的模块,比如门户的相关操作,就在portal文件夹下,论坛的相关操作是在forum文件夹下。
View模板即最终呈现给用户看的则是template()这个函数,稍后可以简单的说下这个函数的相关过程。
接下来说下执行的相关流程,先看下一些代码 检查mod,是否在mod列表里,如果不在或者不对应,则默认为index 接下来我们可以看下libfile()这个函数 那么我们就来看下protal_index.php这个文件 上面是一些文件头信息, 上面是一些文件头信息, 这个template函数,代码比较长,我就不贴了,大致说下功能。
template主要的功能是用来生成缓存文件的名字,只是用来生成这个名字,实际并未生成,真正生成的是template函数之后的那个checktplrefresh(),看名字,应该猜得出,是检查模板是否更新
看下checktplrefresh()这个函数 下面的这个判断主要是看是否在缓存时间内,如果在缓存时间内,则返回false,直接包含之前生成的缓存文件,如果不在缓存时间之后,则进行重新解析。完了之后,就会执行解析好的php缓存文件。显示到前台,大家可以看下parse_template()这个函数用了很正则去解析模板。这个就不多介绍了,大家可以去看下。
由此以来,先是调用source/module/下的相关文件进行读取数据库或者是读取缓存数据的相关功能把,相关变量赋值然后用template和template类进行对模板解析,变量替换,然后显示到前台,大致的过程就是这样的。
当然中间还有一些缓存的相关判断,这部分还在研究之中,稍候会贴出来。
函数库则调用数据库持久层的表对象(M)在class/table下的数据表对象与数据库发生交互,比如source\class\table\table_forum_post.php第三个文件就是模板文件了(V),将获取到得数据填充到页面各模块分工明细,维护简单如果需要添加新的模块,可以仿造这种模式,而不会太复杂大致是这个样子的依我的理解,discuz的MVC结构是这样的:
Model即逻辑处理,应该是source/function,这里面的一些函数是对数据库(表对象class/table),缓存,内存,配置等一些的相关操作。
Control即控制器,应该是source/module对应相关的模块,比如门户的相关操作,就在portal文件夹下,论坛的相关操作是在forum文件夹下。
View模板即最终呈现给用户看的则是template()这个函数,稍后可以简单的说下这个函数的相关过程。
接下来说下执行的相关流程,先看下一些代码 检查mod,是否在mod列表里,如果不在或者不对应,则默认为index 接下来我们可以看下libfile()这个函数 那么我们就来看下protal_index.php这个文件 上面是一些文件头信息, 上面是一些文件头信息, 这个template函数,代码比较长,我就不贴了,大致说下功能。
template主要的功能是用来生成缓存文件的名字,只是用来生成这个名字,实际并未生成,真正生成的是template函数之后的那个checktplrefresh(),看名字,应该猜得出,是检查模板是否更新
看下checktplrefresh()这个函数 下面的这个判断主要是看是否在缓存时间内,如果在缓存时间内,则返回false,直接包含之前生成的缓存文件,如果不在缓存时间之后,则进行重新解析。完了之后,就会执行解析好的php缓存文件。显示到前台,大家可以看下parse_template()这个函数用了很正则去解析模板。这个就不多介绍了,大家可以去看下。
由此以来,先是调用source/module/下的相关文件进行读取数据库或者是读取缓存数据的相关功能把,相关变量赋值然后用template和template类进行对模板解析,变量替换,然后显示到前台,大致的过程就是这样的。
当然中间还有一些缓存的相关判断,这部分还在研究之中,稍候会贴出来。
本文标签:
很赞哦! (0)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
phpwind和discuz哪个好
discuz!(简称dz)和phpwind(简称pw)是国内最 的两个PHP论坛系统,随着它们相继宣布开源以后,在各方面,不管技术上,还是功能上,还是界面上,都有了长足的发展Discuz的NT的LLServer架构设计介绍
在开发LLServer的同时,我一直在跟进测试企业版的相应LLServer客户端,目前这部分代码已测试完毕并提交的DiscuzNT产品中,会跟随较新的源码包一并发布。Discuz论坛关闭了吗?Discuz论坛重新恢复运营
最近,discuz创始人吴洪声(奶罩)对外宣布discuz在经历几个月的停止运营之后,discuz论坛再次回归开始恢复正常运营!discuz设置阅读权限的方法
discuz设置阅读权限:1、点击版块,进入版块管理界面;2、点击某个版块后面的“编辑”按钮;3、在打开的界面中,点击“权限相关”,勾选“浏览版块”列和“用户组”行交叉的复选框;4、点击提交即可完成阅读权限的设置。
留言与评论 (共有 0 条评论) |