discuz MVC结构分析
Discuz軟件經解壓后產生的三個文件夾中的一個叫upload的成為網站的根目錄。里面的內容可以在某些網站上在線閱讀,如用好庫編程網。也可以離線在本地閱讀,如用VS.Php for Visual Studio。這里面的內容安排的井然有序。不同用途的文件都放在了不同的文件夾里了。讓我們來看看其中重要的幾種文件和它們是如何結合在一起的。
1。入口PHP文件
在 根目錄下有不多的幾個PHP文件。它們是僅有的直接處理用戶請求指令的PHP文件,是網站的入口。每個對應著網站的一個主要部分,如門戶 (portal),家園(home), 論壇(forum)。 比如用戶可以給網站發個請求指令全站博文目錄頁 home.php?mod=space&do=blog。當網站收到這個請求后,就會運行home.php來處理這個請求。home.php并不 直接回復用戶,而是從用戶提交的字符串里找到具體的請求內容,然后交給相應的程序塊來處理。在上面的例子里,space意為空間,blog意為博客,所以 用戶是在請求得到博文目錄。所以這個請求交給了負責有關空間請求的程序塊 source\module\home\home_space.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處理分享。
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屬于控 制器層。
?
轉載于:https://www.cnblogs.com/axtkdd/p/4707972.html
總結
以上是生活随笔為你收集整理的discuz MVC结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据项目大致流程
- 下一篇: Python代码自动转成C++代码