ModPHP 中的 MVC

2018-06-13 16:57 更新

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

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

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

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

在 ModPHP 中,是強(qiáng)調(diào)前后端一致的,在后端中可以使用的方法,在前端依然可以隨心所欲地進(jìn)行訪問。只需要通過程序入口文件 mod.php,它是一個訪問控制器,無論是 PHP 引用,還是前端 URL 調(diào)用,只用訪問 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)實現(xiàn)的

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號