久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 yliu277 2015-11-20

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

M方法用于實例化一個基礎(chǔ)模型類,和D方法的區(qū)別在于:
1,、不需要自定義模型類,,減少IO加載,性能較好,;
2,、實例化后只能調(diào)用基礎(chǔ)模型類(默認(rèn)是Model類)中的方法;
3,、可以在實例化的時候指定表前綴,、數(shù)據(jù)庫和數(shù)據(jù)庫的連接信息;
D方法的強(qiáng)大則體現(xiàn)在你封裝的自定義模型類有多強(qiáng),,不過隨著新版ThinkPHP框架的基礎(chǔ)模型類的功能越來越強(qiáng)大,,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ù)情況下,,也許只是需要擴(kuò)展一些通用的邏輯,那么就可以嘗試下面一種方法,。

$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)同樣的功能,。                     

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多