久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

ThinkPHP開發(fā)指南-模型之定義和實例化

來自站長百科
跳轉至: 導航、? 搜索

導航:上一頁

ThinkPHP2.0版本中,可以無需進行任何模型定義。只有在需要封裝單獨的業(yè)務邏輯的時候,模型類才是必須被定義的,因此ThinkPHP在模型上有很多的靈活和方便性,讓你無需因為表太多而煩惱。

根據不同的模型定義,我們有幾種實例化模型的方法,下面來分析下什么情況下用什么方法:

  • 實例化基礎模型(Model) 類

在沒有定義任何模型的時候,我們可以使用下面的方法實例化一個模型類來進行操作:

PHP代碼

$User = new Model('User'); 

或者使用M快捷方法實例化是等效的

PHP代碼

$User = M('User');    

$User->select(); // 進行其他的數據操作 

這種方法最簡單高效,因為不需要定義任何的模型類,所以支持跨項目調用。缺點也是因為沒有自定義的模型類,因此無法寫入相關的業(yè)務邏輯,只能完成基本的CURD操作。

  • 實例化其他模型類

第一種方式實例化因為沒有模型類的定義,因此很難封裝一些額外的邏輯方法,不過大多數情況下,也許只是需要擴展一些通用的邏輯,那么就可以嘗試下面一種方法。

M方法默認是實例化Model類,如果需要實例化其他模型類,可以使用

PHP代碼

$User = M('User', 'CommonModel'); 

上面的方法等效于

PHP代碼

$User = new CommonModel('User'); 

因為系統(tǒng)的模型類都能夠自動加載,因此我們不需要在實例化之前手動進行類庫導入操作。模型類commonModel必須繼承Model,如果沒有定義別名導入的話,需要放在項目Model下。我們可以在CommonModel類里面定義一些通用的邏輯方法,就可以省去為每個數據表定義具體的模型類,如果你的項目已經有超過100個數據表了,而大多數情況都是一些基本的CURD操作的話,只是個別模型有一些復雜的業(yè)務邏輯需要封裝,那么第一種方式和第二種方式的結合是一個不錯的選擇。

  • 實例化用戶定義的模型(×××Model)類

這種情況是使用的最多的,一個項目不可避免的需要定義自身的業(yè)務邏輯實現(xiàn),就需要針對每個數據表定義一個模型類,例如UserModel 、InfoModel等等。

定義的模型類通常都是放到項目的LibModel目錄下面。例如,

PHP代碼

class UserModel extends Model{ 
 Public function myfun(){    

 // 添加自己的業(yè)務邏輯    

 // ………    

}    

} 

其實模型類還可以繼承一個用戶自定義的公共模型類,而不是只能繼承Model類。要實例化自定義模型類,可以使用下面的方式:

PHP代碼


$User = new UserModel();

或者使用D快捷方法實例化是等效的

PHP代碼

$User = D('User');    

$User->select(); // 進行其他的數據操作

D方法可以自動檢測模型類,不存在時系統(tǒng)會拋出異常,同時對于已實例化過的模型,不會重復去實例化。默認的D方法只能支持調用當前項目的模型,如果需要跨項目調用,需要使用:

PHP代碼

$User = D('User', 'Admin'); // 實例化Admin項目下面的User模型    

$User->select(); 

如果啟用了模塊分組功能,可使用:

PHP代碼

$User = D('Admin.User'); 
  • 實例化空模型類

如果你僅僅是使用原生SQL查詢的話,不需要使用額外的模型類,實例化一個空模型類即可進行操作了,例如:

PHP代碼

$Model = new Model();

// 或者使用M快捷方法實例化是等效的

PHP代碼

<pre>
$Model = M();  
$Model->query('SELECT * FROM think_user where status=1');  

空模型類也支持跨項目調用。