ThinkPHP函數詳解之M方法與R方法
這篇文章主要介紹了關於ThinkPHP函數詳解之M方法和R方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
首先給大家介紹ThinkPHP函數詳解:M方法
M方法用於實例化一個基礎模型類,和D方法的區別在於:
1、不需要自訂模型類,減少IO加載,效能較好;
2、實例化後只能呼叫基礎模型類別(預設是Model類別)中的方法;
1、實例化基礎模型(Model) 類別
在沒有定義任何模型的時候,我們可以使用下面的方法實例化一個模型類別來進行操作://实例化User模型 $User = M('User'); //执行其他的数据操作 $User->select();
$User = M('User');
#
$User = new Model('User');
2、實例化其他公共模型類別
第一種方式實例化因為沒有模型類別的定義,因此很難封裝一些額外的邏輯方法,不過大多數情況下,也許只是需要擴展一些通用的邏輯,那麼就可以嘗試下面一個方法。$User = M('CommonModel:User');
$User = new CommonModel('User');
3、傳入表格前綴、資料庫和其他資訊
M方法有三個參數,第一個參數是模型名稱(可以包括基礎模型類別和資料庫),第二個參數用於設定資料表的前綴(留空則取目前項目配置的表前綴),第三個參數用於設定目前使用的資料庫連接資訊(留空則取目前項目配置的資料庫連接資訊),例如:$User = M('db2.User','think_');
$User = M('db1.User',null);
$User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp');
'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp';
$User = M('User','think_','DB_CONFIG');
$User = M('CommonModel:db2.User','think_');
M('UserLogic:User');
D('User','Logic');
ThinkPHP函數詳解:R方法
R方法用於呼叫某個控制器的操作方法,是A方法的進一步增強和補充。關於A方法的用法請見這裡。 R方法的呼叫格式:R('[項目://][分組/]模組/操作','參數','控制器層名稱')例如,我們定義了一個操作方法為:
class UserAction extends Action { public function detail($id){ return M('User')->find($id); } }
#
那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用)
$data = R('User/detail',array('5'));
表示调用User控制器的detail方法(detail方法必须是public类型),返回值就是查询id为5的一个用户数据。如果你要调用的操作方法是没有任何参数的话,第二个参数则可以留空,直接使用:
$data = R('User/detail');
也可以支持跨分组和项目调用,例如:
R('Admin/User/detail',array('5'));
表示调用Admin分组下面的User控制器的detail方法。
R('Admin://User/detail',array('5'));
表示调用Admin项目下面的User控制器的detail方法。
官方的建议是不要在同一层多太多调用,会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助3.1的新特性多层控制器,单独添加一个控制器层用于接口调用,例如,我们增加一个Api控制器层,
class UserApi extends Action { public function detail($id){ return M('User')->find($id); } }
然后,使用R方法调用
$data = R('User/detail',array('5'),'Api');
也就是说,R方法的第三个参数支持指定调用的控制器层。
同时,R方法调用操作方法的时候可以支持操作后缀设置C('ACTION_SUFFIX'),如果你设置了操作方法后缀,仍然不需要更改R方法的调用方式。
以上内容给大家分享了ThinkPHP函数详解之M方法和R方法,希望对大家有所帮助。
相关推荐:
以上是ThinkPHP函數詳解之M方法與R方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...
