ModPHP 中的 MVC

2018-06-13 16:57 更新

在 ModPHP 中,MVC 模式被定義成下面這樣:

  1. 模型(Model) + 控制器(Controller) = 模塊(Module)
  2. 視圖(View)是完全獨(dú)立的,和模型與控制器沒(méi)有上下文關(guān)系。

模塊是包含數(shù)據(jù)和操作數(shù)據(jù)的終端:

在 ModPHP 中,存儲(chǔ)數(shù)據(jù)的模型(數(shù)據(jù)表)叫做模塊數(shù)據(jù)表,操作數(shù)據(jù)的方法也就是控制器。模型與控制器之間的界限如此模糊的原因是因?yàn)椋篗odPHP 中,控制器基本上是自然存在的,它們是模塊被添加到項(xiàng)目中開(kāi)始,就自動(dòng)繼承于 Mod 核心類。例如 mod::add(),mod::update(),mod::delete(),mod::get() 等,它們是現(xiàn)成的操作和獲取數(shù)據(jù)的基本方法,你不需要自己的去實(shí)現(xiàn)。例如用戶(User)模塊,只需要繼承 Mod 類,不需要做其他什么,就可以通過(guò) user::add() 添加用戶,通過(guò) user::update() 更新用戶,通過(guò) user::delete() 刪除用戶,以及通過(guò) user::get() 獲取用戶。你不需要自己連接數(shù)據(jù)庫(kù),選擇數(shù)據(jù)表,編寫查詢,這一切都是可以信手捏來(lái)的。

在 ModPHP 中,是強(qiáng)調(diào)前后端一致的,在后端中可以使用的方法,在前端依然可以隨心所欲地進(jìn)行訪問(wèn)。只需要通過(guò)程序入口文件 mod.php,它是一個(gè)訪問(wèn)控制器,無(wú)論是 PHP 引用,還是前端 URL 調(diào)用,只用訪問(wèn) mod.php,就可以和模塊進(jìn)行溝通,調(diào)用模塊的操作方法。例如下面的方法是等效的:

include 'mod.php';
$result = user::get(array('user_id'=>1));
print_r($result);

<script>
$.get('mod.php?user::get|user_id:1', function(result){
    console.log(result);
});
</script>

視圖獨(dú)立存在,多模板是默認(rèn)實(shí)現(xiàn)的

在其他 PHP 框架中,視圖一般都要對(duì)應(yīng)某個(gè)控制器,并由控制器將其返回給瀏覽器。但 ModPHP 不這么做,這樣對(duì)模板開(kāi)發(fā)的限制太多,例如變量會(huì)被濫用,多模板也很難實(shí)現(xiàn),即使實(shí)現(xiàn)也是很固定的,因?yàn)榭刂破鞯脑O(shè)計(jì)是固定的。在 ModPHP 中,視圖和模型、控制器之間是沒(méi)有上下文關(guān)系的,你可以在視圖中盡情發(fā)揮,隨意編寫模板。ModPHP 使用自動(dòng)生成模塊函數(shù)的方式,讓你隨意調(diào)取某個(gè)模塊的數(shù)據(jù)。實(shí)際上,在 ModPHP 模板中,函數(shù)是被建議使用的,因?yàn)樗鼈児δ軓?qiáng)大,內(nèi)部封裝,不會(huì)造成變量濫用的問(wèn)題。

ModPHP 包含的所有功能和特性,目的是使開(kāi)發(fā)者更專注于界面的呈現(xiàn),而不是把時(shí)間花費(fèi)在思考如何部署和編寫程序邏輯。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)