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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
mysql 搜索之简单应用
Apr 27 PHP
PHP时间戳使用实例代码
Jun 07 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
php中如何防止表单的重复提交
Aug 02 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 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分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
javascript测试题练习代码
2012/10/10 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
使用python实现rsa算法代码
2016/02/17 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
django用户登录验证的完整示例代码
2019/07/21 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
入党自我鉴定范文
2013/10/04 职场文书
2015年工程部工作总结
2015/04/30 职场文书
2015年纪委工作总结
2015/05/13 职场文书
小学体育教学随笔
2015/08/14 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书