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 17 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
php中chdir()函数用法实例
Nov 13 PHP
浅析php原型模式
Nov 25 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
php中通过curl smtp发送邮件
2012/06/05 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python中字符串类型json操作的注意事项
2017/05/02 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
保送生自荐信范文
2013/10/06 职场文书
给排水工程师岗位职责
2013/11/21 职场文书
外贸业务员工作职责
2014/01/06 职场文书
安全生产实施方案
2014/02/23 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
安全责任书
2015/01/29 职场文书