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新建文件自动编号的思路与实现
Jun 27 PHP
有关PHP性能优化的介绍
Jun 20 PHP
php使用curl访问https示例分享
Jan 17 PHP
php随机显示图片的简单示例
Feb 15 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP文件操作方法汇总
Jul 01 PHP
php简单防盗链实现方法
Jul 29 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
php实现的生成排列算法示例
Jul 25 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
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php 的反射详解及示例代码
2016/08/25 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue按需加载实例详解
2019/09/06 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
Python 专题四 文件基础知识
2017/03/20 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python设置环境变量的作用和实例
2019/07/09 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
详解pandas赋值失败问题解决
2020/11/29 Python
京东国际站:JOYBUY
2017/11/23 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
大学生创业计划书的范文
2014/01/07 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
安全生产计划书
2014/05/04 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
2014年调度员工作总结
2014/11/19 职场文书