激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - ThinkPHP之M方法實(shí)例詳解

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

2020-07-09 13:39PHP教程網(wǎng) PHP教程

這篇文章主要介紹了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)行操作:

?
1
2
3
4
//實(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ú)法寫(xiě)入相關(guān)的業(yè)務(wù)邏輯,只能完成基本的CURD操作。

?
1
$User = M('User');

其實(shí)等效于:

?
1
$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)換成小寫(xiě),也就是說(shuō)ThinkPHP的數(shù)據(jù)表命名規(guī)范是全小寫(xiě)的格式。

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

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

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

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

?
1
$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ù)連接信息),例如:

?
1
$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)有表前綴,那么可以使用:

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

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

?
1
$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)目配置文件中配置了:

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

則可以使用:

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

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

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

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

?
1
M('UserLogic:User');

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

?
1
D('User','Logic');

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一色视频 | 综合网天天色 | 精精国产xxxx视频在线播放7 | 国产免费成人 | xxx18hd18hd日本 | a视频在线看 | 日本羞羞的午夜电视剧 | 亚洲午夜在线观看 | 男女一边摸一边做羞羞视频免费 | 91精品国产91热久久久做人人 | 色悠悠久久久久 | 日韩不卡一区二区 | 日日草夜夜操 | 亚洲视频成人在线 | 国产一国产精品一级毛片 | 韩国十九禁高潮床戏在线观看 | 中文字幕免费在线看 | 亚州视频在线 | japanesexxxx24videofree| 福利免费在线 | 91精品国| 亚洲影院一区 | 做爰xxxⅹ性护士hd在线 | 欧美日韩在线看片 | 久久精品日产高清版的功能介绍 | 在线视频 欧美日韩 | 中文字幕网在线 | 亚洲性爰 | 精品中文字幕在线播放 | av电影在线免费 | 亚洲性生活视频 | 午夜精品福利在线观看 | 石原莉奈日韩一区二区三区 | 亚洲第一色婷婷 | 国产一级毛片av | 免费一级毛片在线播放视频 | 国产亚洲高清在线精品不卡 | 久久久www成人免费精品 | 国产污网站在线观看 | 亚洲视频成人 | 免费高清一级欧美片在线观看 |