請?jiān)徫沂褂眉軜?gòu)這個詞,詞語太貧乏,冒犯這個詞了。
系統(tǒng)架構(gòu).PNG
上一篇我們搭建好PHP環(huán)境,下面我們來實(shí)現(xiàn)一個簡單的框架。
具體的思路是這樣:
- Application:應(yīng)用,框架的主入口。全系統(tǒng)唯一單例模式(慢慢會取消單例)。
- 其他需要單例的類或static方法,通過保存在Application中的唯一實(shí)例來提供,我們稱之為【服務(wù)】,比如路由服務(wù)、本地化服務(wù)、日志記錄服務(wù)...
- 系統(tǒng)從這里啟動,讀取配置什么的
- 擁有模塊管理功能(通過組合模式實(shí)現(xiàn))
- Intent: 意圖,從Android中引進(jìn)的,可以認(rèn)為是個上下文
- Module: 模塊, MVC組件,實(shí)現(xiàn)具體功能
系統(tǒng)啟動后,Application將PATHINFO作為參數(shù),生成一個Intent;
Intent向Application請求路由自己;
Application解析出Module/controller/action,并執(zhí)行(Module/controller/action會將響應(yīng)寫入Intent);
Intent返回響應(yīng)。
下面來具體實(shí)現(xiàn),大部分實(shí)現(xiàn)我們通過后面的章節(jié)來說說我的實(shí)現(xiàn)辦法:
- 級聯(lián)配置的實(shí)現(xiàn):讀取應(yīng)用配置,通常使用全局函數(shù),比如thinkphp,我們來實(shí)現(xiàn)一種級聯(lián)配置,比起全局函數(shù)有很大的優(yōu)勢,具體看第12章。
- 意圖是個什么東西?引入意圖有什么好處,具體看第13章。
- 什么是洋蔥鏈?Controller中意圖的處理為什么要引入洋蔥鏈,怎么實(shí)現(xiàn)?具體看14章:從larval中提取的洋蔥鏈流水線。
- Orm的實(shí)現(xiàn)前篇一律?3個階段的Orm實(shí)現(xiàn)思路,請看15章Orm進(jìn)化之路。
- 統(tǒng)一的存取接口,緩存、文件、數(shù)據(jù)庫讀取采用統(tǒng)一的接口,具體實(shí)現(xiàn)在第16章
- 通過配置自動執(zhí)行,一行代碼也不用寫,怎么可能?真的實(shí)現(xiàn)了,具體看可配置的自動執(zhí)行模塊在17章。
- 繼承還是組合,還是Trait,在18章controller的改進(jìn)里討論。