php中如何制定輕量級的MVC標準

字號:


    現(xiàn)在MVC的php開源免費框架已經(jīng)很多了,我們沒有必要去開發(fā)一個輕量的MVC來重復(fù)制造輪子,本文的目的是學(xué)習(xí)MVC的結(jié)構(gòu)準備及MVC思路,這樣可以更好的應(yīng)用開源的MVC框架。
    注:下面的定義都是狹義的,用于限定本次要解決的問題域,你也可以定義你自己標準,這不是啥業(yè)界標準。
    (一) 輕量級MVC定義:
    1. 框架對應(yīng)用無侵入,不依賴任何接口類
    2. 框架零配置,零注解
    3. 簡單易用,易于理解,暫且不搞RESTful,免得復(fù)雜
    (二) 輕量級MVC接口:
    1. Controller采用setter注入請求參數(shù),并支持層級注入,如:book.title.
    2. Controller采用getter供給數(shù)據(jù)給View,在View中可直接取到相應(yīng)屬性值,如:${property}.
    3. Controller采用任意非setter和getter函數(shù)處理請求。
    4. Controller采用函數(shù)返回值控制跳轉(zhuǎn),只允許跳轉(zhuǎn)到另一Controller,不允許一個Controller對應(yīng)兩個View.
    5. Controller對Model的依賴采用setter自動裝配,包括Model之間的依賴.
    6. Session參數(shù),如:loginUserId,也通過setter注入到Controller,如果有請求參數(shù)注入了loginUserId,也會被Session參數(shù)給覆蓋.
    7. View與Controller一對一,通過名稱映射,并支持各種View模板類型擴展,比如:JSP, Velocity, FreeMarker, CommonTemplate等.
    8. 沒有Controller時,View也能執(zhí)行,相當于隱式Controller。
    9. 框架應(yīng)提供COC接口,基于規(guī)則約定某個包名是model,某個包名是controller,某個目錄是view,比如:com.company.module.controller,自動發(fā)現(xiàn)module,并以單例模式加載model,以原型模式加載controller。
    總而言之,接口除了setter和getter,以及自動映射規(guī)則,什么都沒有.
    (三) 輕量級MVC訪問:
    http://主機名[:端口][/應(yīng)用名]/模塊名/控制器名/函數(shù)名.html[?參數(shù)名=參數(shù)值]
    注:方括號代表可省
    (四) 輕量級MVC實現(xiàn):
    符合以上接口的實現(xiàn)均可。
    (五) 輕量級MVC優(yōu)勢:
    業(yè)務(wù)邏輯不依賴任何框架,可以適配到任意框架而不影響業(yè)務(wù)代碼,當舊的框架被淘汰,無人維護時,可以以最快的方式遷移到新的更穩(wěn)定的框架.
    理想是美好的,現(xiàn)實是殘酷的,上面純屬個人想法,現(xiàn)實中困難多了,懷著美好愿景總是好的。