ThinkPHP 3.2.2跨控制器调用方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP 3.2.2跨控制器调用方法相关的知识,希望对你有一定的参考价值。
所谓跨控制器调用,指的是在一个控制器中调用另一个控制器的某个方法。在Thinkphp中有三种方式实现跨控制器调用:
- 直接实例化;
- A()函数实例化;
- R()函数实例化。
(1)直接实例化
直接实例化就是通过new关键字实例化相关控制器,例如:
1 $goods = new GoodsController() //直接实例化Goods控制器类 2 $info = $goods->info(); //调用Goods控制器类的info()方法
需要注意的是,如果实例化的控制器与当前控制器不在同一目录下,需要指定绝对路径。例如要实例化Admin模块下的User控制器,代码如下:
1 $goods = new \Admin\Controller\UserController();
(2)A()函数实例化
ThinkPHP提供了A()函数实例化其他控制器,使用方法如下:
1 $goods = A(‘Goods‘); //A()函数实例化GoodsController类 2 $info = $goods->info(); //调用Goods控制器类的info()方法
从上述代码可以看出,A()函数相对直接实例化的方式简洁很多,仅需要传入控制器名即可。A()函数同样可以实例化其他模块下的控制器,例如:
1 $goods = A(‘Admin/Goods‘);
(3)R()函数实例化
R()函数的使用与A()函数基本一致,唯一不同的是,R()函数可以在实例化控制器的时候把操作方法一并传进去,如此就省略了调用操作方法的步骤,例如:
1 $info = R(‘Admin/Goods/info‘);
以上是关于ThinkPHP 3.2.2跨控制器调用方法的主要内容,如果未能解决你的问题,请参考以下文章