模型例項化(TP)

2021-07-31 20:32:47 字數 1765 閱讀 8603

上面例項化的時候我們需要傳入完整的類名,系統提供了乙個快捷方法d用於資料模型的例項化操作。

要例項化自定義模型類,可以使用下面的方式:

<?php

//例項化模型

$user

= d('user');

// 相當於 $user = new \home\model\usermodel();

// 執行具體的資料操作

$user

->

select();

當 \home\model\usermodel 類不存在的時候,d函式會嘗試例項化公共模組下面的 \common\model\usermodel 類。

d方法的引數就是模型的名稱,並且和模型類的大小寫定義是一致的。

d方法可以自動檢測模型類,如果存在自定義的模型類,則例項化自定義模型類,如果不存在,則會例項化系統的\think\model基類,同時對於已例項化過的模型,不會重複例項化。

d方法還可以支援跨模組呼叫,需要使用:

//例項化admin模組的user模型

d('admin/user');

//例項化extend擴充套件命名空間下的info模型

d('extend://editor/info');

注意:跨模組例項化模型類的時候 不支援自動載入公共模組的模型類。
d方法例項化模型類的時候通常是例項化某個具體的模型類,如果你僅僅是對資料表進行基本的curd操作的話,使用m方法例項化的話,由於不需要載入具體的模型類,所以效能會更高。

例如:

// 使用m方法例項化

$user

= m('user');

// 和用法 $user = new \think\model('user'); 等效

// 執行其他的資料操作

$user

->

select();

m方法也可以支援跨庫操作,例如:

// 使用m方法例項化 操作db_name資料庫的ot_user表

$user

= m('db_name.user','ot_');

// 執行其他的資料操作

$user

->

select();

m方法的引數和\think\model類的引數是一樣的,也就是說,我們也可以這樣例項化:

$new  = m('new','think_',$connection);

// 等效於 $new = new \think\model('new','think_',$connection);

如果你僅僅是使用原生sql查詢的話,不需要使用額外的模型類,例項化乙個空模型類即可進行操作了,例如:

//例項化空模型

$model

=new model();

//或者使用m快捷方法是等效的

$model

= m();

//進行原生的sql查詢

$model

->query('select * from think_user where status = 1');

我們在例項化的過程中,經常使用d方法和m方法,這兩個方法的區別在於m方法例項化模型無需使用者為每個資料表定義模型類,如果d方法沒有找到定義的模型類,則會自動呼叫m方法。

TP 例項化模型

tp 例項化模型 例 new usermodel usermodel new usermodel 庫名.表名 如果傳了 庫名.表名 或 表名 則設定 this name 表名 否則 this name model 的前半部分 this db 方法來連線資料庫 this db 方法中 checktab...

TP3 2例項化複雜模型類

1 表名 xxf witkey member oauth m方法,直接例項化物件 m member oauth xxf witkey db config 具體解析 m方法三個引數 1 表名,無字首 2 字首 3 資料庫配置 資料庫配置資訊預設取的config檔案,如有變動可參照如下 connecti...

模型例項化 thinkphp

當定義了模型之後,需要在操作中將模型例項化才能具體實現模型中的業務邏輯。不同的資料業務規則會有不同的模型定義,而在例項化模型的時候也可能不同。thinkphp 支援如下幾種例項化模型 例項化基礎模型類 例項化其他模型類 例項化使用者自定義模型類 例項化空模型類 thinkphp支援在沒有定義任何模型...