A-A+

thinkphp跨模块调用方法

2015年03月25日 thinkphp开发 暂无评论 阅读 141 次

thinkphp跨模块调用方法

在thinkphp里面我们如何跨模块调用(这里使用Action举例:如果项目需要的话,还有可能跨分组调用,所以有时候需要调用其他组的Action)。
我在开发的过程中经常会在当前Action中调用其他Action中的方法,这就涉及到跨Action的调用,我们还可以了解到A和R两个快捷键方法的使用。

方法一:

$a=A('GROUP.ACTION');
$a->方法

R('group.action');

其中,GROUP是指分组,ACTION是指你需要访问的另外一个ACTION
举例A和R的用法:

  1. $User = A("User"); // 实例化UserAction控制器对象
  2. $User->importUser(); // 调用User模块的importUser操作方法
  3. 这里的A("User") 是一个快捷方法,和下面的代码等效:
  4. import("@.Action.UserAction");
  5. $User = new UserAction();

事实上,在这个例子里面还有比A方法更简单的调用方法,例如:

  1. R("User","importUser"); // 远程调用UserAction控制器的importUser操作方法

上面只是在当前项目中调用,如果你有需要在多个项目之间调用方法,一样可以完成:

  1. $User = A("User","App2"); // 实例化App2项目的UserAction控制器对象
  2. $User->importUser();

// 远程调用App2项目的UserAction控制器的importUser操作方法

  1. R("User","importUser","App2");

这里介绍我项目中用到的实例:
我的项目下面分了两个组:Admin和Home,相信大家看名字就能明白这两个组的是做什么的~
实例化模块的时候(当前位置是在Home中IndexAction类的index方法中实例化)

  1. import("@.Action.Admin.UserAction");   //Admin就是组的名字
  2. $user = new UserAction();
  3. $user->add();

我们需要注意的是:调用的方法必须是 public型的, 本文中的Action为缩写,具体写法:Action(或者分组Action)

标签:

给我留言

Copyright © web前端技术开发个人博客 保留所有权利  京ICP备14060653号 Theme  Ality

用户登录