天天看點

基于Typecho CMS架構開發大中型應用基于Typecho CMS架構開發大中型應用

大中型應用暫且定義為:大于等于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

==========

未完待續...