欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ThinkPHP之M方法實例詳解

 更新時間:2014年06月20日 11:21:58   投稿:shichen2014  
這篇文章主要介紹了ThinkPHP的M方法,需要的朋友可以參考下

M方法用于實例化一個基礎模型類,和D方法的區(qū)別在于:

1、不需要自定義模型類,減少IO加載,性能較好;
2、實例化后只能調(diào)用基礎模型類(默認是Model類)中的方法;
3、可以在實例化的時候指定表前綴、數(shù)據(jù)庫和數(shù)據(jù)庫的連接信息;
D方法的強大則體現(xiàn)在你封裝的自定義模型類有多強,不過隨著新版ThinkPHP框架的基礎模型類的功能越來越強大,M方法也比D方法越來越實用了。

M方法的調(diào)用格式:

M('[基礎模型名:]模型名','數(shù)據(jù)表前綴','數(shù)據(jù)庫連接信息')

我們來看下M方法具體有哪些用法:

1、實例化基礎模型(Model) 類

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

//實例化User模型
$User = M('User');
 //執(zhí)行其他的數(shù)據(jù)操作
$User->select();

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

$User = M('User');

其實等效于:

$User = new Model('User');

表示操作think_user表。M方法和D方法一樣也有單例功能,多次調(diào)用并不會重復實例化。M方法的模型名參數(shù)在轉換成數(shù)據(jù)表的時候會自動轉換成小寫,也就是說ThinkPHP的數(shù)據(jù)表命名規(guī)范是全小寫的格式。

2、實例化其他公共模型類

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

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

改用法其實等效于:

$User = new CommonModel('User');

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

3、傳入表前綴、數(shù)據(jù)庫和其他信息

M方法有三個參數(shù),第一個參數(shù)是模型名稱(可以包括基礎模型類和數(shù)據(jù)庫),第二個參數(shù)用于設置數(shù)據(jù)表的前綴(留空則取當前項目配置的表前綴),第三個參數(shù)用于設置當前使用的數(shù)據(jù)庫連接信息(留空則取當前項目配置的數(shù)據(jù)庫連接信息),例如:

$User = M('db2.User','think_');

表示實例化Model模型類,并操作db2數(shù)據(jù)庫中的think_user表。
如果第二個參數(shù)留空或者不傳,表示使用當前項目配置中的數(shù)據(jù)表前綴,如果操作的數(shù)據(jù)表沒有表前綴,那么可以使用:

$User = M('db1.User',null);

表示實例化Model模型類,并操作db1數(shù)據(jù)庫中的user表。
如果你操作的數(shù)據(jù)庫需要不同的用戶賬號,可以傳入數(shù)據(jù)庫的連接信息,例如:

$User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp');

表示基礎模型類用Model,然后對think_user表進行操作,用user_a賬號進行數(shù)據(jù)庫連接,操作數(shù)據(jù)庫是thinkphp。
第三個連接信息參數(shù)可以使用DSN配置或者數(shù)組配置,甚至可以支持配置參數(shù)。
例如,在項目配置文件中配置了:

'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp';

則可以使用:

$User = M('User','think_','DB_CONFIG');

基礎模型類和數(shù)據(jù)庫可以一起使用,例如:

$User = M('CommonModel:db2.User','think_');

如果要實例化分層模型的話,利用公共模型類的方式,我們可以使用:

M('UserLogic:User');

來實例化UserLogic,雖然這樣做的意義不大,因為可以用

D('User','Logic');

實現(xiàn)同樣的功能。

相關文章

  • php版微信自動獲取收貨地址api用法示例

    php版微信自動獲取收貨地址api用法示例

    這篇文章主要介紹了php版微信自動獲取收貨地址api用法,結合實例形式分析了php版微信API接口調(diào)用與使用技巧,需要的朋友可以參考下
    2016-09-09
  • Discuz論壇密碼與密保加密規(guī)則

    Discuz論壇密碼與密保加密規(guī)則

    這篇文章主要介紹了Discuz論壇密碼與密保加密規(guī)則的相關資料,需要的朋友可以參考下
    2016-12-12
  • php利用imagemagick實現(xiàn)復古老照片效果實例

    php利用imagemagick實現(xiàn)復古老照片效果實例

    imagick是一個PHP的擴展,用ImageMagick提供的API來進行圖片的創(chuàng)建與修改,不過這些操作已經(jīng)包裝到擴展imagick中去了,最終調(diào)用的是ImageMagick提供的API。這篇文章主要給大家介紹了php利用imagemagick實現(xiàn)復古老照片的效果實例,需要的朋友可以參考下。
    2017-02-02
  • 在php中設置session用memcache來存儲的方法總結

    在php中設置session用memcache來存儲的方法總結

    memcached提供了一個自定義的session處理器可以被用于存儲用戶session數(shù)據(jù)到memcached服務端,下面通過本文給大家介紹在php中設置session用memcache來存儲的方法總結,對php session memcache相關知識感興趣的朋友一起學習吧
    2016-01-01
  • Laravel框架下載,安裝及路由操作圖文詳解

    Laravel框架下載,安裝及路由操作圖文詳解

    這篇文章主要介紹了Laravel框架下載,安裝及路由操作,結合實例形式詳細分析了laravel框架的下載、安裝、配置、路由等相關操作原理與使用技巧,需要的朋友可以參考下
    2019-12-12
  • php artisan命令信息列舉

    php artisan命令信息列舉

    這篇文章主要介紹了php artisan命令信息列舉,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • thinkPHP中create方法與令牌驗證實例淺析

    thinkPHP中create方法與令牌驗證實例淺析

    這篇文章主要介紹了thinkPHP中create方法與令牌驗證,以一個簡單實例形式分析了thinkPHP中create方法與令牌驗證增加表單安全性的相關技巧,代碼備有詳盡注釋說明,需要的朋友可以參考下
    2015-12-12
  • 淺談Laravel POST,PUT,PATCH 路由的區(qū)別

    淺談Laravel POST,PUT,PATCH 路由的區(qū)別

    今天小編就為大家分享一篇淺談Laravel POST,PUT,PATCH 路由的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php a simple smtp class

    php a simple smtp class

    php a simple smtp class...
    2007-11-11
  • laravel5 Eloquent 實現(xiàn)事務方式

    laravel5 Eloquent 實現(xiàn)事務方式

    今天小編就為大家分享一篇laravel5 Eloquent 實現(xiàn)事務方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10

最新評論