成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么在ThinkPHP項目中實現(xiàn)一個M方法-創(chuàng)新互聯(lián)

這篇文章給大家介紹怎么在ThinkPHP項目中實現(xiàn)一個M方法,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)公司專注于藤縣企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。藤縣網(wǎng)站建設(shè)公司,為藤縣等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

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

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

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

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

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

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

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

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

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

$User = M('User');

其實等效于:

$User = new Model('User');

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

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

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

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

改用法其實等效于:

$User = new CommonModel('User');

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

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

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

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

表示實例化Model模型類,并操作db2數(shù)據(jù)庫中的think_user表。
如果第二個參數(shù)留空或者不傳,表示使用當(dāng)前項目配置中的數(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');

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

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

則可以使用:

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

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

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

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

M('UserLogic:User');

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

D('User','Logic');

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

關(guān)于怎么在ThinkPHP項目中實現(xiàn)一個M方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文名稱:怎么在ThinkPHP項目中實現(xiàn)一個M方法-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://jinyejixie.com/article40/jsjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化、商城網(wǎng)站、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
台江县| 延庆县| 枣阳市| 开化县| 兴安盟| 晋江市| 宝应县| 花莲县| 将乐县| 唐山市| 丹棱县| 虹口区| 毕节市| 康保县| 荆州市| 丘北县| 大余县| 祥云县| 财经| 民县| 澄江县| 乌兰察布市| 安达市| 浦江县| 武城县| 宝丰县| 河源市| 灵宝市| 桃源县| 宜城市| 宝山区| 乌拉特后旗| 大埔县| 四会市| 扎兰屯市| 鞍山市| 博乐市| 达日县| 文山县| 孟津县| 宜兴市|