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 GoodsController extends Controller{

    function showlist(){

        // 实例化User控制器与调用方法

        $user = A(‘User‘);//通过快捷函数实例化控制器对象

        echo $user->number();//调用number()方法

    }

}

调用示范:


1

2

3

A(‘User‘);    //跨控制器

A(‘Admin/User‘);    //跨模块

A(‘shop://Admin/User‘);    //跨项目

如果还是不够方便的话框架还提供了R()方法,实例化类并调用方法。


1

2

3

4

//User为控制器 number为方法

R(‘User/number‘);

R(‘Admin/User/number‘);

R(‘shop://Admin/User/number‘);

效果如下:


1

2

3

4

5

6

class GoodsController extends Controller{

    function showlist(){

        // 实例化User控制器与调用方法

                A(‘User/number‘);//实例化user类并调用number方法

    }

}

时间: 2024-10-29 19:05:38

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

跨控制器调用

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

ThinkPHP 3.2.2跨控制器调用方法

 所谓跨控制器调用,指的是在一个控制器中调用另一个控制器的某个方法.在ThinkPHP中有三种方式实现跨控制器调用: 直接实例化: A()函数实例化; R()函数实例化. (1)直接实例化  直接实例化就是通过new关键字实例化相关控制器,例如: 1 $goods = new GoodsController() //直接实例化Goods控制器类 2 $info = $goods->info(); //调用Goods控制器类的info()方法 需要注意的是,如果实例化的控制器与当前控制器不在同一目

ThinkPHP跨控制器调用方法

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

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

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

thinkphp5的控制器调用自身模块和调用其他模块的方法

以user为例,调用user.php的get_number()方法 一.不管是调用自身模块还是其他模块app\model\User.php写法不变 1 <?php 2 3 namespace app\index\model; 4 use think\Model; 5 6 class user extends Model 7 { 8 public function get_member(){ 9 return 3; 10 } 11 } 二.user控制器调用user模块(即控制器调用自身模块) 1

实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="GET",RequestFormat=WebMessageFormat.Json, Resp

tp5跨控制器调用方法

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

phalcon跨控制器调用

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

【Android个人理解(八)】跨应用调用不同组件的方法

如果情景: 创建两个应用appA和appB,appA包括一个Service,此Service有一个堵塞方法每隔10秒钟产生一个随机数字,例如以下: public int getRandomInt(){ Thread.sleep(10000); return someRandomInt; } appB调用appA中Service.getRandomInt()的方法,将数字显示在界面上. 解决方式: 我们都知道.从层次上,大体能够分进程,任务,组件.线程.Android系统使得开发人员对于任务.组件