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

 
 
 

thinkphp 跨模块调用的更多相关文章

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

    ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...

  2. thinkphp跨模块调用

    thinkphp跨模块调用 跨模块调用模板 return $view->fetch('admin@user/add'); 全路径模板调用: return $view->fetch(APP_ ...

  3. Thinkphp跨模块调用视图文件

    当需要跨模块调用视图文件时,需要使用被包含文件的完整路径,如: <include file="./App/Home/View/Store/header.html"/> ...

  4. ThinkPHP实现跨模块调用操作方法概述

    ThinkPHP实现跨模块调用操作方法概述 投稿:shichen2014 字体:[增加 减小] 类型:转载   使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块 ...

  5. Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

    原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问 ...

  6. ThinkPHP跨控制器调用方法

    跨控制器调用方法 1. 先造对象,再调用里面的方法 $sc=new \Home\Controller\IndexController();  用绝对路径找echo $sc->ShuChu(); ...

  7. STL 跨模块 调用 异常 解决

    本文为转载别人的,以作收藏之用 百度了一天,现在把结论放上边: 1.不要用STL(std::string属于STL)来跨模块传输数据,例如:dll(so)之间,dll(so)和exe(elf)之间. ...

  8. thinkphp5.1跨模块调用控制器或者模型

    tp5.1 采用命名空间的方式进行调用.

  9. package跨模块调用

    module包 logger模块 def logger(): print("logger") # logger() main模块 from module import logger ...

随机推荐

  1. jquery ui autocomplete

    //条码录入,自动完成功能 function addAutoComplete() { $('#txt_spuNo').autocomplete({ autoFocus: true, source: f ...

  2. linux基础-第二十单元_计划任务crond服务

    第二十单元 计划任务crond服务 什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiW ...

  3. ubuntu14.04使用samba共享文件

    samba是linux中常用的共享文件的软件 ubuntu12.04及以上版本中已经安装了samba 开始配置: samba配置文件: /etc/samba/smb.conf可以修改配置文件来设置sa ...

  4. (转)spring boot实战(第三篇)事件监听源码分析

    原文:http://blog.csdn.net/liaokailin/article/details/48194777 监听源码分析 首先是我们自定义的main方法: package com.lkl. ...

  5. docker入门——镜像简介

    什么是docker镜像 Docker镜像是由文件系统叠加而成. 最底端是一个引导文件系统,即bootfs: 这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永远不会和引导文件系统有 ...

  6. xunsearch使用namespace后bug修复

    xunsearch在使用了namespace后会出现不能正常使用 错误例如以下: Fatal error: Uncaught [vendors\xunsearch\lib\XSException] . ...

  7. 利用问答机器人API开发制作聊天类App

    缘起 很久没写项目了,所以单纯的想练练手,正好看到有问答机器人的接口,想到之前也做过聊天项目,为什么不实验一下呢.当然也是简单调用接口的项目,并没有真正的完成问答的算法等等.业余项目,功能不齐全,只实 ...

  8. 微信小程序 如何定义全局函数?

    微信小程序 定义全局数据.函数复用.模版等 微信小程序定义全局数据.函数复用.模版等问题总结: 1.如何定义全局数据 在app.js的App({})中定义的数据或函数都是全局的,在页面中可以通过var ...

  9. Crontab命令--Linux

    Crontab命令--定时任务   命令格式 Example:  

  10. mysql的innodb数据库引擎详解

    http://www.jb51.net/softjc/158474.html   这篇文章主要介绍了mysql的innodb数据库引擎,需要的朋友可以参考下   一.mysql体系结构和存储引擎 1. ...