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开发文件系统实例讲解
Oct 09 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
php curl 上传文件代码实例
Apr 27 PHP
YII Framework框架教程之日志用法详解
Mar 14 PHP
php中类和对象:静态属性、静态方法
Apr 09 PHP
php文件上传类的分享
Jul 06 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
php实现文件下载实例分享
2014/06/02 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
Javascript缓存API
2016/06/14 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Django工程的分层结构详解
2019/07/18 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python实现结构体代码实例
2020/02/10 Python
python使用建议技巧分享(三)
2020/08/18 Python
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
销售经理岗位职责
2014/03/16 职场文书
解除劳动合同协议书
2014/04/14 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
音乐之声观后感
2015/06/04 职场文书
小学校园广播稿
2015/08/18 职场文书
Python图像处理之图像拼接
2021/04/28 Python
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android