在thinkphp里面我们如何跨模块调用(这里使用Action举例:如果项目需要的话,还有可能跨分组调用,所以有时候需要调用其他组的Action)。
我在开发的过程中经常会在当前Action中调用其他Action中的方法,这就涉及到跨Action的调用,我们还可以了解到A和R两个快捷键方法的使用。
举例A和R的用法:
- $User = A("User"); // 实例化UserAction控制器对象
- $User->importUser(); // 调用User模块的importUser操作方法
- 这里的A("User") 是一个快捷方法,和下面的代码等效:
- import("@.Action.UserAction");
- $User = new UserAction();
事实上,在这个例子里面还有比A方法更简单的调用方法,例如:
- R("User","importUser"); // 远程调用UserAction控制器的importUser操作方法
上面只是在当前项目中调用,如果你有需要在多个项目之间调用方法,一样可以完成:
- $User = A("User","App2"); // 实例化App2项目的UserAction控制器对象
- $User->importUser();
// 远程调用App2项目的UserAction控制器的importUser操作方法
- R("User","importUser","App2");
这里介绍我项目中用到的实例:
我的项目下面分了两个组:Admin和Home,相信大家看名字就能明白这两个组的是做什么的~
实例化模块的时候(当前位置是在Home中IndexAction类的index方法中实例化)
- import("@.Action.Admin.UserAction"); //Admin就是组的名字
- $user = new UserAction();
- $user->add();
我们需要注意的是:调用的方法必须是 public型的, 本文中的Action为缩写,具体写法:Action(或者分组Action)