ThinkPHP之R方法实例详解


Posted in PHP onJune 20, 2014

ThinkPHP的R方法用于调用某个控制器的操作方法,是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方法。

官方的建议是不要在同一层做太多调用,否则会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助ThinkPHP3.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方法的调用方式。

PHP 相关文章推荐
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
php从字符串创建函数的方法
Mar 16 PHP
Thinkphp关闭缓存的方法
Jun 26 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
form自动提交实例讲解
Jul 10 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
ThinkPHP之import方法实例详解
Jun 20 #PHP
ThinkPHP之A方法实例讲解
Jun 20 #PHP
ThinkPHP之M方法实例详解
Jun 20 #PHP
php实现的短网址算法分享
Jun 20 #PHP
ThinkPHP3.1之D方法实例详解
Jun 20 #PHP
php写的AES加密解密类分享
Jun 20 #PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 #PHP
You might like
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
js multiple全选与取消全选实现代码
2012/12/04 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
JS功能代码集锦
2016/05/04 Javascript
javascript如何创建对象
2016/08/29 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
python Django模板的使用方法
2016/01/14 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
工地安全质量标语
2014/06/07 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
课题研究阶段性总结
2015/08/13 职场文书
MySQL主从切换的超详细步骤
2022/06/28 MySQL