您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz的MVC结构分析
冷卉2025-06-29Discuz教程已有人查阅
导读Discuz软件经解压后产生的三个文件夹中的一个叫upload的成为网站的根目录。里面的内容可以在某些网站上在线阅读。也可以离线在本地阅读,如用VS.Php for Visual Studio。
Discuz软件经解压后产生的三个文件夹中的一个叫upload的成为网站的根目录。里面的内容可以在某些网站上在线阅读。也可以离线在本地阅读,如用VS.Php for Visual Studio。这里面的内容安排的井然有序。不同用途的文件都放在了不同的文件夹里了。让我们来看看其中重要的几种文件和它们是如何结合在一起的。
1。入口PHP文件
在 根目录下有不多的几个PHP文件。它们是仅有的直接处理用户请求指令的PHP文件,是网站的入口。每个对应着网站的一个主要部分,如门户 (portal),家园(home), 论坛(forum)。 比如用户可以给网站发个请求指令全站博文目录页 home.php?mod=space&do=blog。当网站收到这个请求后,就会运行home.php来处理这个请求。home.php并不 直接回复用户,blog意为博客,所以 用户是在请求得到博文目录。所以这个请求交给了负责有关空间请求的程序块 source\module\home\home_space.php 来处理。
2。程序块PHP文件
程序块(module)可以说是入口文件的助手, 接受入口文件指派的任务。一个入口文件一般有几个这样的助手处理不同的请求。比如家园口(home.php)就有编辑器(editor),分享 (follow),邀请(invite),道具(magic),勋章(model),空间(space)等助手,都在source/module /home文件夹里。一般每个对应着一类界面样子固定的请求。比如负责空间请求的程序块是 source\module\home\home_space.php。和入口不同的是从同一个入口有可能会看到样子完全不同的页面。但当同一个程序块来服务时,会看到样子相同的的页面。 在用户的请求指令里(如home.php?mod=space&do=blog)指明了需要哪个程序块,如mod=space表明是要空间块,mod代表module(程序块)。
程序块并不是用户请求作啥就作啥,它负责检查该用户是否有权利作做此要求。有时它会将工作分派给 某个助手。如当用户请求home.php?mod=space&do=blog时,他不光指明了处理请求的程序块(mod=space)还指明了 具体的工作(do=blog),而空间这个程序块有助手来处理各个工作,都在source\include\space里,如 space_album.php处理相册, space_blog.php处理博客, space_favorite.php处理分享。
3。被包含PHP文件
space_blog.php 要想生成用户要的博文目录网页需要两样东西:一是数据,在这里就是博文名单和每篇博文的一些信息如标题和作者名。二是显示的格式。前者可要封装数据库表的类(class)来提供,后者定义在一个模板(template)文件里。
4。数据库表的封装类
Discuz 提供了很多个类(class)来封装数据库里的各个表,这样从数据库里取数据就不需要写SQL语句,而只要用相应的类里提供的方法(method)就行 了。这些类都在source\class\table文件夹里。space_blog.php要用的是table_home_blog类来得到储存在 home_blog表里的博文信息。
5。HTML模版文件
数据有了,那怎样将这些数据漂亮和整齐显示在浏览器里呢?这需要定义HTML的格式。这些格式都定义在template文件夹里。特别是用来显示博文信息的格式定义在template\default\home\space_blog_list.htm里。
之后让我们总结一下当网站收到用户的请求home.php?mod=space&do=blog时,网站程序内部分派工作的次序
1 home.php
2 分派给 source\module\home\home_space.php
3 分派给 source\include\space\space_blog.php
4 数据取自source\class\table\table_home_blog.php
5 格式定义在 template\default\home\space_blog_list.htm
从这些文件的内容和作用看,Discuz是按照MVC 架构模式将程序分割成若干逻辑部件:模型-视图-控制器(Model-View-Controller) 。
source\include\space\space_blog.php属于服务层,source\class\table \table_home_blog.php属于数据层,二者合起来组成了模型层,template\default\home \space_blog_list.htm属于视图层,而home.php和source\module\home\home_space.php属于控制器层。
1。入口PHP文件
在 根目录下有不多的几个PHP文件。它们是仅有的直接处理用户请求指令的PHP文件,是网站的入口。每个对应着网站的一个主要部分,如门户 (portal),家园(home), 论坛(forum)。 比如用户可以给网站发个请求指令全站博文目录页 home.php?mod=space&do=blog。当网站收到这个请求后,就会运行home.php来处理这个请求。home.php并不 直接回复用户,blog意为博客,所以 用户是在请求得到博文目录。所以这个请求交给了负责有关空间请求的程序块 source\module\home\home_space.php 来处理。
2。程序块PHP文件
程序块(module)可以说是入口文件的助手, 接受入口文件指派的任务。一个入口文件一般有几个这样的助手处理不同的请求。比如家园口(home.php)就有编辑器(editor),分享 (follow),邀请(invite),道具(magic),勋章(model),空间(space)等助手,都在source/module /home文件夹里。一般每个对应着一类界面样子固定的请求。比如负责空间请求的程序块是 source\module\home\home_space.php。和入口不同的是从同一个入口有可能会看到样子完全不同的页面。但当同一个程序块来服务时,会看到样子相同的的页面。 在用户的请求指令里(如home.php?mod=space&do=blog)指明了需要哪个程序块,如mod=space表明是要空间块,mod代表module(程序块)。
程序块并不是用户请求作啥就作啥,它负责检查该用户是否有权利作做此要求。有时它会将工作分派给 某个助手。如当用户请求home.php?mod=space&do=blog时,他不光指明了处理请求的程序块(mod=space)还指明了 具体的工作(do=blog),而空间这个程序块有助手来处理各个工作,都在source\include\space里,如 space_album.php处理相册, space_blog.php处理博客, space_favorite.php处理分享。
3。被包含PHP文件
space_blog.php 要想生成用户要的博文目录网页需要两样东西:一是数据,在这里就是博文名单和每篇博文的一些信息如标题和作者名。二是显示的格式。前者可要封装数据库表的类(class)来提供,后者定义在一个模板(template)文件里。
4。数据库表的封装类
Discuz 提供了很多个类(class)来封装数据库里的各个表,这样从数据库里取数据就不需要写SQL语句,而只要用相应的类里提供的方法(method)就行 了。这些类都在source\class\table文件夹里。space_blog.php要用的是table_home_blog类来得到储存在 home_blog表里的博文信息。
5。HTML模版文件
数据有了,那怎样将这些数据漂亮和整齐显示在浏览器里呢?这需要定义HTML的格式。这些格式都定义在template文件夹里。特别是用来显示博文信息的格式定义在template\default\home\space_blog_list.htm里。
之后让我们总结一下当网站收到用户的请求home.php?mod=space&do=blog时,网站程序内部分派工作的次序
1 home.php
2 分派给 source\module\home\home_space.php
3 分派给 source\include\space\space_blog.php
4 数据取自source\class\table\table_home_blog.php
5 格式定义在 template\default\home\space_blog_list.htm
从这些文件的内容和作用看,Discuz是按照MVC 架构模式将程序分割成若干逻辑部件:模型-视图-控制器(Model-View-Controller) 。
source\include\space\space_blog.php属于服务层,source\class\table \table_home_blog.php属于数据层,二者合起来组成了模型层,template\default\home \space_blog_list.htm属于视图层,而home.php和source\module\home\home_space.php属于控制器层。
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz管理员前台可以登录后台无法登录怎么办
Discuz管理员前台可以登录后台无法登录的解决方法步骤如下1. 取消ip认证2.管理员用户组变为普通用户组了 进入不了后台3. 后台设置了ip列表导致访问不了后台
Discuz!NT模板机制详细分析
作为产品中的一大特色,模板机制一经推出,就引来了大家特别是站长们的关注。但它所饱受的风风 雨雨也成了那时不少人关注的话题。而今天本人将结合在产品组中的开发经历
discuz中常用函数
js密码验证 install/js/setup.js将内容传送页面ajax注册(各页面通用ajax,js函数):register.aspxjs:emplates\default\ajax.js
Discuz 7.2版本SQL注入漏洞
实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!Discuz 7.2 版本SQL注入漏洞的利用
相关源码
-
(自适应)挖掘机大型采矿设备pbootcms网站源码下载本模板基于PbootCMS系统开发,专为重型机械设备行业设计,特别适合挖掘机、采矿设备、工程机械等工业设备展示。采用响应式布局技术,确保各类设备参数和图片在不同终端上都能清晰展示。查看源码 -
(自适应响应式)瓷砖大理石装修建材类网站pbootcms模板html5模板本模板基于PbootCMS开发,针对瓷砖、大理石等建材行业特点进行优化设计。采用响应式布局技术,确保产品展示效果在不同设备上都能合理呈现。模板特别强化了石材纹理的视觉表现力,帮助建材企业更好地展示产品质感。查看源码 -
(自适应)证书授权书防伪查询系统pbootcms模板本模板基于PbootCMS系统开发,为各类证书查询机构设计,可快速构建高效安全的证书核验平台。采用响应式布局技术,自动适配手机端操作,支持批量导入证书数据,提供便捷的查询接口,满足机构证书管理及用户在线核验需求。查看源码 -
(响应式H5)帝国cms7.5文章新闻博客模板带会员中心本模板基于帝国CMS内核开发,为新闻资讯、个人博客及作品展示类网站设计。采用响应式布局技术,确保在手机、平板和电脑等不同设备上都能获得良好的浏览体验。查看源码 -
响应式WordPress简约博客主题Alt_BlogAlt_Blog主题该模板为博客内容展示设计,采用简约现代的风格理念,打造清晰的内容呈现平台。响应式布局确保在不同设备上都能获得良好的浏览体验,帮助博主更好地展示和分享内容。查看源码 -
自适应手机版五金机械阀门设备通用行业网站模板该PbootCMS内核开发的网站模板适用于阀门设备、五金机械类企业,通过更换文字图片也可快速适配其他工业领域。采用响应式设计,确保PC端与手机端数据同步,操作便捷,并附带测试数据。查看源码
| 分享笔记 (共有 篇笔记) |
