亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ThinkPHP之M方法實(shí)例詳解

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

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

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

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

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

我們來(lái)看下M方法具體有哪些用法:

1、實(shí)例化基礎(chǔ)模型(Model) 類

在沒(méi)有定義任何模型的時(shí)候,我們可以使用下面的方法實(shí)例化一個(gè)模型類來(lái)進(jìn)行操作:

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

這種方法最簡(jiǎn)單高效,因?yàn)椴恍枰x任何的模型類,所以支持跨項(xiàng)目調(diào)用。缺點(diǎn)也是因?yàn)闆](méi)有自定義的模型類,因此無(wú)法寫入相關(guān)的業(yè)務(wù)邏輯,只能完成基本的CURD操作。

$User = M('User');

其實(shí)等效于:

$User = new Model('User');

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

2、實(shí)例化其他公共模型類

第一種方式實(shí)例化因?yàn)闆](méi)有模型類的定義,因此很難封裝一些額外的邏輯方法,不過(guò)大多數(shù)情況下,也許只是需要擴(kuò)展一些通用的邏輯,那么就可以嘗試下面一種方法。

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

改用法其實(shí)等效于:

$User = new CommonModel('User');

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

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

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

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

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

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

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

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

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

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

則可以使用:

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

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

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

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

M('UserLogic:User');

來(lái)實(shí)例化UserLogic,雖然這樣做的意義不大,因?yàn)榭梢杂?/p>

D('User','Logic');

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

相關(guān)文章

  • php版微信自動(dòng)獲取收貨地址api用法示例

    php版微信自動(dòng)獲取收貨地址api用法示例

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

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

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

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

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

    在php中設(shè)置session用memcache來(lái)存儲(chǔ)的方法總結(jié)

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

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

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

    php artisan命令信息列舉

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

    thinkPHP中create方法與令牌驗(yàn)證實(shí)例淺析

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

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

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

    php a simple smtp class

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

    laravel5 Eloquent 實(shí)現(xiàn)事務(wù)方式

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

最新評(píng)論