您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz的MVC结构分析介绍
梦柏2025-06-28Discuz教程已有人查阅
导读首先,我们先介绍一下MVC开发思想简介,MVC的全名是Model-View-Controller是模型-师徒-控制器的缩写,它是一种软件设计思想。使用一种业务逻辑、数据和显示分离的方法资质代码
首先,我们先介绍一下MVC开发思想简介,MVC的全名是Model-View-Controller是模型-师徒-控制器的缩写,它是一种软件设计思想。使用一种业务逻辑、数据和显示分离的方法资质代码,实现代码复用的较大化。
接下来,我们介绍一下MVC的执行流程,起始点是用户,用户输入数据,把数据交给Controller,Controller主要负责的流程控制,获取GET,POST的值,验证结果等,然后把数据传给模型,Model在此充当的角色是与数据库打交道的,把数据通过Model取出来,之后Controller调用View,把页面显示给用户。
我们用在discuz的一些源码来举个例子:
当网站收到用户的请求home.php?mod=space&do=blog时,网站程序内部分派工作的次序
详情如下:
1、入口PHP文件
在根目录下有不多的几个PHP文件。它们是仅有的直接处理用户请求指令的PHP文件,是网站的入口。每个对应着网站的一个主要部分,如门户(portal),家园(home),论坛(forum)。比如用户可以给网站发个请求指令全站博文目录页home.php?mod=space&do=blog。当网站收到这个请求后,就会运行home.php来处理这个请求。home.php并不直接回复用户,而是从用户提交的字符串pace意为空间,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模版文件
这些格式都定义在template文件夹里。特别是用来显示博文信息的格式定义在template\default\home\space_blog_list.htm里。
接下来,我们介绍一下MVC的执行流程,起始点是用户,用户输入数据,把数据交给Controller,Controller主要负责的流程控制,获取GET,POST的值,验证结果等,然后把数据传给模型,Model在此充当的角色是与数据库打交道的,把数据通过Model取出来,之后Controller调用View,把页面显示给用户。
我们用在discuz的一些源码来举个例子:
当网站收到用户的请求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)。详情如下:
1、入口PHP文件
在根目录下有不多的几个PHP文件。它们是仅有的直接处理用户请求指令的PHP文件,是网站的入口。每个对应着网站的一个主要部分,如门户(portal),家园(home),论坛(forum)。比如用户可以给网站发个请求指令全站博文目录页home.php?mod=space&do=blog。当网站收到这个请求后,就会运行home.php来处理这个请求。home.php并不直接回复用户,而是从用户提交的字符串pace意为空间,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模版文件
这些格式都定义在template文件夹里。特别是用来显示博文信息的格式定义在template\default\home\space_blog_list.htm里。
本文标签:
很赞哦! ()
相关教程
图文教程
discuz解决手机端图片显示模糊的步骤方法
discuz如何解决手机端图片显示模糊问题,主要内容为discuz实现多图上传、图片大图显示、图片高质量显示discuz等功能。最终实现的实现多图上传
discuz插件开发入门教程
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程。现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西
Discuz编码规范教程
本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。适用范围如无特殊说明
离线环境下Discuz安装包的部署与配置方法
在离线环境中,我们需要确保所有依赖的软件版本与Discuz的兼容性,这一点非常关键。同时,我们还需要了解如何在没有网络的情况下进行软件的安装和配置,这通常需要一些手动操作和技巧。
相关源码
-
(自适应)品牌创意设计作品工作室pbootcms模板下载该模板适用于品牌策划、艺术设计、广告创意公司官网,亦可通过替换图文快速适配其他行;高端创意设计公司工作室网站源码极简代码架构、艺术化视觉布局、企业级功能扩展性。查看源码 -
(PC模板)工商公司注册会计财务记账pbootcms模板源码下载基于PbootCMS的工商财税行业网站系统,手工编写前端代码确保执行效率,双端自适应设计,支持后台实时更新服务价格和政策文件。查看源码 -
(自适应)工商代理公司注册财务会计pbootcms模板免费下载为工商代理、财务会计服务企业设计的网站模板,基于PbootCMS开发,充分考虑了企业服务行业的展示需求与客户转化路径。设计风格专业严谨,布局清晰合理,呈现企业服务内容与专业优势。查看源码 -
(自适应响应式)绿色环保防腐木材轻钢别墅建材pbootcms模板下载本模板为环保防腐木材、轻钢别墅建材类企业设计开发,基于PbootCMS内核构建,充分考虑了建材行业的展示需求与产品特点。模板设计风格自然环保,布局清晰合理,呈现建材产品特性与专业优势,帮助访客直观了解产品特点并建立信任感。查看源码 -
自适应电子科技类产品公司pbootcms网站模板基于PbootCMS内核开发,为电子科技类企业设计,适用于电子产品展示、企业官网等场景。该模板采用开源架构,用户可自由访问和修改源码,灵活适配各类行业需求,无需二次开发成本查看源码 -
帝国cms淘宝客京东联盟网站整站源码下载本模板基于帝国CMS内核深度开发,为淘宝客行业量身定制。随着腾讯微信与淘宝生态的互联互通,淘宝客链接现可在微信、QQ等平台直接分享,为推广带来更多便利。模板特别优化了店铺推广功能,有效避免商品下架导致的链接失效问题,同时支持京东联盟等多平台商品推广。查看源码
| 分享笔记 (共有 篇笔记) |
