大中型應用暫且定義為:大于等于3個資料表的應用!汗吧!
Typecho原本是一款部落格系統,其架構體系有别于市面上一般意義MVC架構,主體代碼以自創的Widget為基類,整體非常簡潔。
單一入口
除Db配置外,其他配置存于DB中
路由配置也存于DB中
自創Widget層,無傳統Model層
自創Action層,類似傳統的Controller層
Hook機制
泛Plugin機制,Plugin包含注冊已有Hook的Handler、擴充已有Widget的方法、注冊新的前端Route以映射新的Action、注冊後端管理界面
支援UI主題
我又不是Typecho官方開發者,也不在相關背景機關segmentfault.公司工作,為什麼要用這種小衆架構?
事實上,你确實不需要用Typecho,PHP世界的架構已太多,完全可以選擇更進階的架構。
不知從何時開始,我發現自己是一個“小衆”患者,不喜歡走尋常路。就像Linux在桌面領域可能已經夠小衆了,但我喜歡用更小衆的FreeBSD。
這隻是我的一次嘗試而已。
原則:基于MVC模式,增加Service層。
C層
前面我們說過,Typecho中自創了Action概念,這便是我們C層的基礎,但Action沒有明确的定義。是以我會定義出一個Controller基類。
M層
Typecho中沒有Model的概念,都是直接調用SQL查詢。是以也要定義Model基類。
V層
視圖檔案是View的内容載體,為減少學習成本,不再引入模闆引擎,即直接使用PHP文法并直接引人C中執行。
Service層
在複雜應用中,MVC最大的問題就是可重用的代碼提煉不夠,有的人C層太胖,有的人M層太胖。引入Service業務層,有助于對業務層的提煉和封裝,盡可能提高代碼的重複使用度。
Demo項目:Typecho Alumni校友錄插件項目
項目代碼結構:
/plugins/Alumni/Base/Action.php|Model.php|Service.php|Helper.php
/plugins/Alumni/Model/
/plugins/Alumni/Service/
/plugins/Alumni/Action/
/plugins/Alumni/views/default/
/plugins/Alumni/Plugin.php
/plugins/Alumni/panel.php
==========
未完待續...