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‘);
时间: 2024-08-24 05:50:53

ThinkPHP 3.2.2跨控制器调用方法的相关文章

ThinkPHP跨控制器调用方法

跨控制器调用方法 1. 先造对象,再调用里面的方法 $sc=new \Home\Controller\IndexController();  用绝对路径找echo $sc->ShuChu(); 2. $sc=new IndexController();  用相对路径 echo $sc->ShuChu(); 还可以使用thingkphp中的快捷方法 1. $sc=A("Index");      使用TP框架的快捷方法A来创建控制器对象  ()内直接写控制器名 [跨模块调用]

tp5跨控制器调用方法

法一: 若在同一个controller文件夹下的控制器互相调用的话可以直接new来实例化: 例如在Index 控制器里面调用Menus $menus=new Menus; //在当前控制器里实例化Menus 控制器 或者用 controller()助手函数来实例化 $menus=controller('Menus'); 法二:如果不在一个模块下的话可以通过 use 来引入 比如 : use app\common\controller\Menus; 然后再实例化 $menus=new Menus;

ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,

一.命名空间(主要是为了实现自动加载类) *命名空间(相当于虚拟的目录),为了让类有一个统一的文件夹来管理(可以自动加载'类'),每个文件都要有命名空间*tp如何做命名空间:*TP框架下有一个初始命名空间(相当于根目录)ThinkPHP\Libray*在初始命名空间下又包含很多根命名空间,这些根命名空间主要分两类:1.TP核心类里面的根(系统文件)        在Libray下,有几个文件夹就有几个根(所有的文件夹都是根)2.APP里面的根(自定义文件)        APP里面的根是以模块名

跨控制器调用

跨控制器调用就是在本控制器里调用其他控制器里的方法或属性. $u = A("User");//在该控制器里实例化其他控制器User对象,A快捷函数的用法:A([模块/]控制器标志 $u->member(); 也可以简写成:R("User/member");R函数是对A函数的一个封装. A和R函数不仅可以跨控制器,跨模块,还可以跨项目调用,A([项目名://][模块/]控制器标志),R([项目名://][模块/]控制器标志/方法名).

tp框架基础控制器调用方法

public function indd(){ //调用该控制器下的某个方法 $this ->index(); //跨控制器调用 $k = A("index");// 创建控制器对象 $k -> index(); //跨模块调用 $k = A("home/index"); $k -> index(); }

JS访问或设置cookie的方法+跨域调用方法

无意中从163网站获取的JS访问或设置cookie的方法,Log到日志上以防遗忘 //COOKIE功能检查function fCheckCookie(){    if(!navigator.cookieEnabled){        alert("您好,您的浏览器设置禁止使用cookie\n请设置您的浏览器,启用cookie功能,再重新登录.");    }} //获取Cookiefunction fGetCookie(sName){   var sSearch = sName +

thinkphp3.2跨控制器调用其他模块的方法

thinphp中前台后台都有互相调用方法,这样可以省去重复内容. 1 2 $hello = new \Admin\Common\Fun\hello(); $hello->hehe(); 调用其他地方的方法同理. 如果是在同控制器里模块名可以省略. 如调用common里面的某个类的方法: 1 2 $hello = new \Common\Fun\hello(); $hello->hehe(); 框架里面提供了跨模块夸.控制器的 A() 方法 1 2 3 4 5 6 7 class GoodsCo

phalcon跨控制器调用

最近小贩在使用Phalcon框架时遇到了一个问题,就是在当前控制器如果调用其他控制器中的方法,现在问题解决,特此贴出代码: $this -> dispatcher -> forward(array(     'controller'    =>    '其他控制器名',     'action'        =>    '其他控制器中的方法名' )); 如果想像其他控制器传递参数,代码如下: $this -> dispatcher -> forward(array(

ThinkPHP 跨模块调用操作方法(A方法与R方法)

ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内置了 A方法与 R 方法这两个特殊的大写字母方法来处理跨模块调用的问题. 目前 Index 模块内有 index 操作,User 模块有 showName 操作,User 模块及 showName 操作具体代码如下: <?php class UserAction extends Action{ pu