• thinkphp 跨模块调用


    5.13 跨模块调用

     
    在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。
    例如,我们在Index模块调用User模块的操作方法
    1. class IndexAction extends Action{
    2.     public function index(){
    3.         //实例化UserAction
    4.         $User = new UserAction();
    5.         //其他用户操作
    6.          //...
    7.         $this->display(); //输出页面模板
    8.     }
    9.  }
    因为系统会自动加载Action控制器,因此 我们不需要导入UserAction类就可以直接实例化。
    并且为了方便跨模块调用,系统内置了A方法和R方法。
    A方法表示实例化某个模块,例如,上面的方法可以改为:
    1. class IndexAction extends Action{
    2.     public function index(){
    3.         //实例化UserAction
    4.         $User = A('User');
    5.         //其他用户操作
    6.         //...
    7.         $this->display(); //输出页面模板
    8.     }
    9.  }
    4
    事实上,A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。
    跨项目调用的格式是:
    A('[项目名://][分组名/]模块名')
    例如:
    1. A('User') //表示调用当前项目的User模块
    2. A('Admin://User') //表示调用Admin项目的User模块
    3. A('Admin/User') //表示调用Admin分组的User模块
    4. A('Admin://Tool/User') //表示调用Admin项目Tool分组的User模块
     
    R方法表示调用一个模块的某个操作方法,调用格式是:
    R('[项目名://][分组名/]模块名/操作名',array('参数1','参数2'…))
    例如:
    1. R('User/info') //表示调用当前项目的User模块的info操作方法
    2. R('Admin/User/info') //表示调用Admin分组的User模块的info操作方法
    3. R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法
    R方法还支持对调用的操作方法需要传入参数,例如User模块中我们定义了一个info方法:
    1. class UserAction extends Action{
    2.     protected function info($id){
    3.         $User = M('User');
    4.         $User->find($id);
    5.         //...
    6.     }
    7.  }
    接下来,我们可以在其他模块中调用:
    1. R('User/info',array(15))
    表示调用当前项目的User模块的info操作方法,并且id参数传入15
     
     
  • 相关阅读:
    可视化工具gephi源码探秘(一)
    在ssh中利用Solr服务建立的界面化站内搜索---solr2
    Nutch源码阅读进程5---updatedb
    利用Solr服务建立的站内搜索雏形---solr1
    Nutch源码阅读进程4---parseSegment
    Nutch源码阅读进程3---fetch
    VS2015编译GEOS3.5.1源码
    VS2015编译GDAL2.2.1源码
    UE4读取脑电波MindWave插件(展示如何使用第三方库制作UE4插件)
    UE4修改自Rama的UDP通信蓝图插件
  • 原文地址:https://www.cnblogs.com/hellowzd/p/4674127.html
Copyright © 2020-2023  润新知