discuz MVC结构分析
Discuz軟件經(jīng)解壓后產(chǎn)生的三個文件夾中的一個叫upload的成為網(wǎng)站的根目錄。里面的內(nèi)容可以在某些網(wǎng)站上在線閱讀,如用好庫編程網(wǎng)。也可以離線在本地閱讀,如用VS.Php for Visual Studio。這里面的內(nèi)容安排的井然有序。不同用途的文件都放在了不同的文件夾里了。讓我們來看看其中重要的幾種文件和它們是如何結(jié)合在一起的。
1。入口PHP文件
在 根目錄下有不多的幾個PHP文件。它們是僅有的直接處理用戶請求指令的PHP文件,是網(wǎng)站的入口。每個對應(yīng)著網(wǎng)站的一個主要部分,如門戶 (portal),家園(home), 論壇(forum)。 比如用戶可以給網(wǎng)站發(fā)個請求指令全站博文目錄頁 home.php?mod=space&do=blog。當(dāng)網(wǎng)站收到這個請求后,就會運(yùn)行home.php來處理這個請求。home.php并不 直接回復(fù)用戶,而是從用戶提交的字符串里找到具體的請求內(nèi)容,然后交給相應(yīng)的程序塊來處理。在上面的例子里,space意為空間,blog意為博客,所以 用戶是在請求得到博文目錄。所以這個請求交給了負(fù)責(zé)有關(guān)空間請求的程序塊 source\module\home\home_space.php 來處理。
程序塊(module)可以說是入口文件的助手, 接受入口文件指派的任務(wù)。一個入口文件一般有幾個這樣的助手處理不同的請求。比如家園口(home.php)就有編輯器(editor),分享 (follow),邀請(invite),道具(magic),勛章(model),空間(space)等助手,都在source/module /home文件夾里。一般每個對應(yīng)著一類界面樣子固定的請求。比如負(fù)責(zé)空間請求的程序塊是 source\module\home\home_space.php。和入口不同的是從同一個入口有可能會看到樣子完全不同的頁面。但當(dāng)同一個程序塊來服務(wù)時,會看到樣子相同的的頁面。 在用戶的請求指令里(如home.php?mod=space&do=blog)指明了需要哪個程序塊,如mod=space表明是要空間塊,mod代表module(程序塊)。
程序塊并不是用戶請求作啥就作啥,它負(fù)責(zé)檢查該用戶是否有權(quán)利作做此要求。有時它會將工作分派給 某個助手。如當(dāng)用戶請求home.php?mod=space&do=blog時,他不光指明了處理請求的程序塊(mod=space)還指明了 具體的工作(do=blog),而空間這個程序塊有助手來處理各個工作,都在source\include\space里,如 space_album.php處理相冊, space_blog.php處理博客, space_favorite.php處理分享。
4。數(shù)據(jù)庫表的封裝類
Discuz 提供了很多個類(class)來封裝數(shù)據(jù)庫里的各個表,這樣從數(shù)據(jù)庫里取數(shù)據(jù)就不需要寫SQL語句,而只要用相應(yīng)的類里提供的方法(method)就行 了。這些類都在source\class\table文件夾里。space_blog.php要用的是table_home_blog類來得到儲存在 home_blog表里的博文信息。
5。HTML模版文件
數(shù)據(jù)有了,那怎樣將這些數(shù)據(jù)漂亮和整齊顯示在瀏覽器里呢?這需要定義HTML的格式。這些格式都定義在template文件夾里。特別是用來顯示博文信息的格式定義在template\default\home\space_blog_list.htm里。
最后讓我們總結(jié)一下當(dāng)網(wǎng)站收到用戶的請求home.php?mod=space&do=blog時,網(wǎng)站程序內(nèi)部分派工作的次序
1?? home.php
2? ? ? ?? 分派給 source\module\home\home_space.php
3? ?? ?? ?????? 分派給 source\include\space\space_blog.php
4? ?? ?? ???????????? 數(shù)據(jù)取自source\class\table\table_home_blog.php
5? ????? ?? ????????? 格式定義在 template\default\home\space_blog_list.htm
從這些文件的內(nèi)容和作用看,Discuz是按照MVC 架構(gòu)模式將程序分割成若干邏輯部件:模型-視圖-控制器(Model-View-Controller) 。
source\include\space\space_blog.php屬于服務(wù)層,source\class\table \table_home_blog.php屬于數(shù)據(jù)層,二者合起來組成了模型層,template\default\home \space_blog_list.htm屬于視圖層,而home.php和source\module\home\home_space.php屬于控 制器層。
?
轉(zhuǎn)載于:https://www.cnblogs.com/axtkdd/p/4707972.html
總結(jié)
以上是生活随笔為你收集整理的discuz MVC结构分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据项目大致流程
- 下一篇: 数据结构视频教程 -《新东方计算机考研数