ThinkPHP函數詳解:M方法,thinkphp函數詳解_PHP教程

來源:互聯網
上載者:User

ThinkPHP函數詳解:M方法,thinkphp函數詳解


M方法用於執行個體化一個基本模型類,和D方法的區別在於:
1、不需要自訂模型類,減少IO載入,效能較好;
2、執行個體化後只能調用基本模型類(預設是Model類)中的方法;
3、可以在執行個體化的時候指定表首碼、資料庫和資料庫的串連資訊;
D方法的強大則體現在你封裝的自訂模型類有多強,不過隨著新版ThinkPHP架構的基本模型類的功能越來越強大,M方法也比D方法越來越實用了。
M方法的調用格式:
M('[基本模型名:]模型名','資料表首碼','資料庫連接資訊')
我們來看下M方法具體有哪些用法:
1、執行個體化基本模型(Model) 類

在沒有定義任何模型的時候,我們可以使用下面的方法執行個體化一個模型類來進行操作:

//執行個體化User模型$User = M('User');//執行其他的資料操作$User->select();

這種方法最簡單高效,因為不需要定義任何的模型類,所以支援跨項目調用。缺點也是因為沒有自訂的模型類,因此無法寫入相關的商務邏輯,只能完成基本的CURD操作。

$User = M('User');

其實等效於:

$User = new Model('User');

表示操作think_user表。M方法和D方法一樣也有單例功能,多次調用並不會重複執行個體化。M方法的模型名參數在轉換成資料表的時候會自動轉換成小寫,也就是說ThinkPHP的資料表命名規範是全小寫格式。


2、執行個體化其他公用模型類

第一種方式執行個體化因為沒有模型類的定義,因此很難封裝一些額外的邏輯方法,不過大多數情況下,也許只是需要擴充一些通用的邏輯,那麼就可以嘗試下面一種方法。

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

改用法其實等效於:

$User = new CommonModel('User');

因為系統的模型類都能夠自動載入,因此我們不需要在執行個體化之前手動進行類庫匯入操作。模型類CommonModel必須繼承Model。我們可以在CommonModel類裡面定義一些通用的邏輯方法,就可以省去為每個資料表定義具體的模型類,如果你的項目已經有超過100個資料表了,而大多數情況都是一些基本的CURD操作的話,只是個別模型有一些複雜的商務邏輯需要封裝,那麼第一種方式和第二種方式的結合是一個不錯的選擇。


3、傳入表首碼、資料庫和其他資訊

M方法有三個參數,第一個參數是模型名稱(可以包括基本模型類和資料庫),第二個參數用於設定資料表的首碼(留空則取當前項目配置的表首碼),第三個參數用於設定當前使用的資料庫連接資訊(留空則取當前項目配置的資料庫連接資訊),例如:

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

表示執行個體化Model模型類,並操作db2資料庫中的think_user表。
如果第二個參數留空或者不傳,表示使用當前項目配置中的資料表首碼,如果操作的資料表沒有表首碼,那麼可以使用:

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

表示執行個體化Model模型類,並操作db1資料庫中的user表。
如果你操作的資料庫需要不同的使用者帳號,可以傳入資料庫的串連資訊,例如:

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

表示基本模型類用Model,然後對think_user表進行操作,用user_a帳號進行資料庫連接,操作資料庫是thinkphp。
第三個串連資訊參數可以使用DSN配置或者數組配置,甚至可以支援配置參數。
例如,在項目設定檔中配置了:

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

則可以使用:

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

基本模型類和資料庫可以一起使用,例如:

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

如果要執行個體化分層模型的話,利用公用模型類的方式,我們可以使用:

M('UserLogic:User');

來執行個體化UserLogic,雖然這樣做的意義不大,因為可以用

D('User','Logic');

實現同樣的功能。

http://www.bkjia.com/PHPjc/1053809.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1053809.htmlTechArticleThinkPHP函數詳解:M方法,thinkphp函數詳解 M方法用於執行個體化一個基本模型類,和D方法的區別在於: 1、不需要自訂模型類,減少IO載入,性...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.