日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > ThinkPHP > ThinkPHP函數(shù)詳解:M方法

ThinkPHP函數(shù)詳解:M方法

來源:程序員人生   發(fā)布時間:2014-02-14 03:58:55 閱讀次數(shù):3518次
M方法用于實(shí)例化一個基礎(chǔ)模型類,和D方法的區(qū)別在于:
1、不需要自定義模型類,減少IO加載,性能較好;
2、實(shí)例化后只能調(diào)用基礎(chǔ)模型類(默認(rèn)是Model類)中的方法;
3、可以在實(shí)例化的時候指定表前綴、數(shù)據(jù)庫和數(shù)據(jù)庫的連接信息;
D方法的強(qiáng)大則體現(xiàn)在你封裝的自定義模型類有多強(qiáng),不過隨著新版ThinkPHP框架的基礎(chǔ)模型類的功能越來越強(qiáng)大,M方法也比D方法越來越實(shí)用了。
M方法的調(diào)用格式:
M('[基礎(chǔ)模型名:]模型名','數(shù)據(jù)表前綴','數(shù)據(jù)庫連接信息')
我們來看下M方法具體有哪些用法:
1、實(shí)例化基礎(chǔ)模型(Model) 類

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

//實(shí)例化User模型
$User = M('User');
//執(zhí)行其他的數(shù)據(jù)操作
$User->select();
這種方法最簡單高效,因?yàn)椴恍枰x任何的模型類,所以支持跨項(xiàng)目調(diào)用。缺點(diǎn)也是因?yàn)闆]有自定義的模型類,因此無法寫入相關(guān)的業(yè)務(wù)邏輯,只能完成基本的CURD操作。
$User = M('User');
其實(shí)等效于:
$User = new Model('User');
表示操作think_user表。M方法和D方法一樣也有單例功能,多次調(diào)用并不會重復(fù)實(shí)例化。M方法的模型名參數(shù)在轉(zhuǎn)換成數(shù)據(jù)表的時候會自動轉(zhuǎn)換成小寫,也就是說ThinkPHP的數(shù)據(jù)表命名規(guī)范是全小寫的格式。


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

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

$User = M('CommonModel:User');
改用法其實(shí)等效于:
$User = new CommonModel('User');
因?yàn)橄到y(tǒng)的模型類都能夠自動加載,因此我們不需要在實(shí)例化之前手動進(jìn)行類庫導(dǎo)入操作。模型類CommonModel必須繼承Model。我們可以在CommonModel類里面定義一些通用的邏輯方法,就可以省去為每個數(shù)據(jù)表定義具體的模型類,如果你的項(xiàng)目已經(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)前項(xiàng)目配置的表前綴),第三個參數(shù)用于設(shè)置當(dāng)前使用的數(shù)據(jù)庫連接信息(留空則取當(dāng)前項(xiàng)目配置的數(shù)據(jù)庫連接信息),例如:

$User = M('db2.User','think_');
表示實(shí)例化Model模型類,并操作db2數(shù)據(jù)庫中的think_user表。
如果第二個參數(shù)留空或者不傳,表示使用當(dāng)前項(xiàng)目配置中的數(shù)據(jù)表前綴,如果操作的數(shù)據(jù)表沒有表前綴,那么可以使用:
$User = M('db1.User',null);
表示實(shí)例化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ù)。
例如,在項(xiàng)目配置文件中配置了:
'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp';
則可以使用:
$User = M('User','think_','DB_CONFIG');


基礎(chǔ)模型類和數(shù)據(jù)庫可以一起使用,例如:
$User = M('CommonModel:db2.User','think_');
如果要實(shí)例化分層模型的話,利用公共模型類的方式,我們可以使用:
M('UserLogic:User');
來實(shí)例化UserLogic,雖然這樣做的意義不大,因?yàn)榭梢杂?div id="mwsqua40mo" class="w_dama2">D('User','Logic');
實(shí)現(xiàn)同樣的功能。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
為碼而活
積分:4237
15粉絲
7關(guān)注
欄目熱點(diǎn)
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美成人在线免费视频 | 一区在线观看 | 国产精品久久久久久久久搜平片 | 亚洲麻豆 | 国产福利专区 | 三级视频网站在线观看 | 五月天婷婷丁香 | 视频免费1区二区三区 | 精品一区二区三区在线视频 | 亚洲免费视频网站 | 欧美视频一区 | 久久久亚洲成人 | 久久久久成人精品 | 免费a观看| 五月激情综合网 | 精品久久国产 | 国产一区二区成人 | 成人av在线一区二区 | 日韩成人影院 | 91精品国产乱码久久久久久久久 | www.成人在线 | 成人动漫在线免费观看 | 国产精品一区不卡 | 国产一区二区三区视频观看 | 日本三级中国三级99人妇网站 | 麻豆视频在线免费观看 | 亚洲精品一区二区在线观看 | 99久久夜色精品国产亚洲96 | 伊人2| 国内精品国产成人国产三级粉色 | 日韩精品视频三区 | 免费看黄在线看 | 精品久久影视 | 婷婷毛片 | 欧美a黄 | 不卡一区二区三区四区 | 亚洲欧美在线播放 | 国产一区 | 日韩欧美精品在线视频 | 国产麻豆乱码精品一区二区三区 | 91青青草视频 |