ThinkPHP之R方法實(shí)例詳解
ThinkPHP的R方法用于調(diào)用某個(gè)控制器的操作方法,是A方法的進(jìn)一步增強(qiáng)和補(bǔ)充。
R方法的調(diào)用格式:
R('[項(xiàng)目://][分組/]模塊/操作','參數(shù)','控制器層名稱')
例如,我們定義了一個(gè)操作方法為:
class UserAction extends Action {
public function detail($id){
return M('User')->find($id);
}
}
那么就可以通過(guò)R方法在其他控制器里面調(diào)用這個(gè)操作方法(一般R方法用于跨模塊調(diào)用)
$data = R('User/detail',array('5'));
表示調(diào)用User控制器的detail方法(detail方法必須是public類(lèi)型),返回值就是查詢id為5的一個(gè)用戶數(shù)據(jù)。如果你要調(diào)用的操作方法是沒(méi)有任何參數(shù)的話,第二個(gè)參數(shù)則可以留空,直接使用:
$data = R('User/detail');
也可以支持跨分組和項(xiàng)目調(diào)用,例如:
R('Admin/User/detail',array('5'));
表示調(diào)用Admin分組下面的User控制器的detail方法。
R('Admin://User/detail',array('5'));
表示調(diào)用Admin項(xiàng)目下面的User控制器的detail方法。
官方的建議是不要在同一層做太多調(diào)用,否則會(huì)引起邏輯的混亂,被公共調(diào)用的部分應(yīng)該封裝成單獨(dú)的接口,可以借助ThinkPHP3.1的新特性多層控制器,單獨(dú)添加一個(gè)控制器層用于接口調(diào)用,例如,我們?cè)黾右粋€(gè)Api控制器層,
class UserApi extends Action {
public function detail($id){
return M('User')->find($id);
}
}
然后,使用R方法調(diào)用
$data = R('User/detail',array('5'),'Api');
也就是說(shuō),R方法的第三個(gè)參數(shù)支持指定調(diào)用的控制器層。
同時(shí),R方法調(diào)用操作方法的時(shí)候可以支持操作后綴設(shè)置C('ACTION_SUFFIX'),如果你設(shè)置了操作方法后綴,仍然不需要更改R方法的調(diào)用方式。
相關(guān)文章
Laravel 自動(dòng)轉(zhuǎn)換長(zhǎng)整型雪花 ID 為字符串的實(shí)現(xiàn)
這篇文章主要介紹了Laravel 自動(dòng)轉(zhuǎn)換長(zhǎng)整型雪花 ID 為字符串的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
PHP刪除字符串中非字母數(shù)字字符方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于PHP刪除字符串中非字母數(shù)字字符方法和知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。2019-01-01
php購(gòu)物車(chē)實(shí)現(xiàn)代碼
php購(gòu)物車(chē)實(shí)現(xiàn)代碼這個(gè)代碼比較全,需要的朋友可以參考下。2011-10-10
三個(gè)思路解決laravel上傳文件報(bào)錯(cuò):413 Request Entity Too Large問(wèn)題
上傳圖片的時(shí)候,是用laravel自帶的上傳圖片的方法,一下氣上傳了20張,結(jié)果就無(wú)情報(bào)錯(cuò):413 Request Entity Too Large,后面查一下,這個(gè)報(bào)錯(cuò)信息是nginx報(bào)的錯(cuò)誤,不是php報(bào)的錯(cuò)誤。也就是說(shuō)在上傳圖片的時(shí)候被nginx攔截了2017-11-11
php腳本運(yùn)行時(shí)的超時(shí)機(jī)制詳解
在我們平常的開(kāi)發(fā)中,也許曾經(jīng)都遇到過(guò)PHP腳本運(yùn)行超時(shí)的情況,當(dāng)遇到這種情況我們經(jīng)常會(huì)通過(guò)使用 set_time_limit(非安全模式),或修改配置文件并重啟服務(wù)器,或者修改程序減少程序的執(zhí)行時(shí)間,使其在允許的范圍之內(nèi),以解決此問(wèn)題。2016-02-02
Yii中實(shí)現(xiàn)處理前后臺(tái)登錄的新方法
這篇文章主要介紹了Yii中實(shí)現(xiàn)處理前后臺(tái)登錄的新方法,具體分析了Yii中前后臺(tái)登錄的新思路與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-12-12

