thinkphp 跨模块调用

本文介绍了在开发过程中如何实现跨模块调用,包括使用A方法实例化不同模块及分组中的控制器,以及利用R方法调用指定模块的操作方法并传递参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.13 跨模块调用

 
在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。
例如,我们在Index模块调用User模块的操作方法
  1. class IndexAction extends Action{
  2.     public function index(){
  3.         //实例化UserAction
  4.         $User = new UserAction();
  5.         //其他用户操作
  6.          //...
  7.         $this->display(); //输出页面模板
  8.     }
  9.  }
因为系统会自动加载Action控制器,因此 我们不需要导入UserAction类就可以直接实例化。
并且为了方便跨模块调用,系统内置了A方法和R方法。
A方法表示实例化某个模块,例如,上面的方法可以改为:
  1. class IndexAction extends Action{
  2.     public function index(){
  3.         //实例化UserAction
  4.         $User = A('User');
  5.         //其他用户操作
  6.         //...
  7.         $this->display(); //输出页面模板
  8.     }
  9.  }
4
事实上,A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。
跨项目调用的格式是:
A('[项目名://][分组名/]模块名')
例如:
  1. A('User') //表示调用当前项目的User模块
  2. A('Admin://User') //表示调用Admin项目的User模块
  3. A('Admin/User') //表示调用Admin分组的User模块
  4. A('Admin://Tool/User') //表示调用Admin项目Tool分组的User模块
 
R方法表示调用一个模块的某个操作方法,调用格式是:
R('[项目名://][分组名/]模块名/操作名',array('参数1','参数2'…))
例如:
  1. R('User/info') //表示调用当前项目的User模块的info操作方法
  2. R('Admin/User/info') //表示调用Admin分组的User模块的info操作方法
  3. R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法
R方法还支持对调用的操作方法需要传入参数,例如User模块中我们定义了一个info方法:
  1. class UserAction extends Action{
  2.     protected function info($id){
  3.         $User = M('User');
  4.         $User->find($id);
  5.         //...
  6.     }
  7.  }
接下来,我们可以在其他模块中调用:
  1. R('User/info',array(15))
表示调用当前项目的User模块的info操作方法,并且id参数传入15
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值