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

本文实例讲述了thinkphp3.2实现跨控制器调用其他模块的方法。分享给大家供大家参考,具体如下:

thinphp中前台后台都有互相调用方法,这样可以省去重复内容。

$hello = new \Admin\Common\Fun\hello();
$hello->hehe();

调用其他地方的方法同理。

如果是在同控制器里模块名可以省略。

如调用common里面的某个类的方法:

$hello = new \Common\Fun\hello();
$hello->hehe();

框架里面提供了跨模块、夸控制器的 A() 方法

class GoodsController extends Controller{
  function showlist(){
    // 实例化User控制器与调用方法
    $user = A('User');//通过快捷函数实例化控制器对象
    echo $user->number();//调用number()方法
  }
}

调用示范:

A('User');  //跨控制器
A('Admin/User');  //跨模块
A('shop://Admin/User');  //跨项目

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

//User为控制器 number为方法
R('User/number');
R('Admin/User/number');
R('shop://Admin/User/number');

效果如下:

class GoodsController extends Controller{
  function showlist(){
    // 实例化User控制器与调用方法
        A('User/number');//实例化user类并调用number方法
  }
}

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(0)

相关推荐

  • ThinkPHP控制器间实现相互调用的方法

    本文实例讲述了ThinkPHP控制器间实现相互调用的方法.分享给大家供大家参考.具体实现方法如下: ThinkPHP同一个项目里,两个控制器的方法如何相互调用呢?ThinkPHP提供了一个A(),通过它可以使控制器之间的方法相互调用,使得代码可以重复利用. 官方似乎对A()方法没有相关使用文档,现在通过一个例子来说一下如使用A()方法. 有两个控制器,ColumnsAction和NewsAction.ncatlist()是ColumnsAction的分类列表方法,现在我要在控制器NewsActi

  • thinkphp3.2实现上传图片的控制器方法

    本文讲述了thinkphp3.2实现上传图片的控制器方法.分享给大家供大家参考,具体如下: public function file() { $baseUrl = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'])); import('ORG.Net.UploadFile'); import('ORG.Util.Services_JSON'); $upload = new UploadFile(); $upload->maxSize =

  • 初识ThinkPHP控制器

    本文的重点讲解的ThinkPHP控制器的定义.基本操作内容,希望大家可以对ThinkPHP控制器有初步的了解. 最基本的控制器: <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ } public function hello(){ echo 'hello'; } } 控制器的名称采用驼峰法命名(首字母

  • 完美解决在ThinkPHP控制器中命名空间的问题

    前几天在TP中,使用PHP自带类,因为命名空间,遇到一个小问题.因为ThinkPHP中使用了命名空间,如果在Home命名空间下,直接执行如下代码 <pre name="code" class="php">$datetime= new DateTime($basedate, new DateTimeZone($timezone)); 那么其等同如 $datetime= new \Home\DateTime($basedate, new <span s

  • thinkphp控制器调度使用示例

    1.如何通过地址栏参数来得到模块名称和控制器名称(即使在有路由和开了重写模块的情况下) 2.tp是如何实现前置,后置方法功能模块,和如何执行带参数的方法? php系统自带的 ReflectionClass,ReflectionMethod 类,可以反射用户自定义类的中属性,方法的权限和参数等信息,通过这些信息可以准确的控制方法的执行 ReflectionClass主要用的方法:  hasMethod(string)  是否存在某个方法getMethod(string)   获取方法 Reflec

  • ThinkPHP控制器详解

    在上一课程中,你可能会对ThinkPHP的路由会有一丝丝疑惑,不过没关系,学完本课程,很多事都会豁然开朗. 控制器文件命名遵守IndexController.class.php的方式 控制器的定义 在开始之前,我们还是需要明确一下控制器的定义: <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function read($id){ ec

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

    本文实例讲述了thinkphp3.2实现跨控制器调用其他模块的方法.分享给大家供大家参考,具体如下: thinphp中前台后台都有互相调用方法,这样可以省去重复内容. $hello = new \Admin\Common\Fun\hello(); $hello->hehe(); 调用其他地方的方法同理. 如果是在同控制器里模块名可以省略. 如调用common里面的某个类的方法: $hello = new \Common\Fun\hello(); $hello->hehe(); 框架里面提供了跨

  • Nodejs调用Dll模块的方法

    公司项目采用Electron(electronjs.org/)开发pc应用,会涉及到与底层硬件设备的通信,而sdk封装 基本上都是通过 C++ 动态链接库dll实现的. 有两种方案可供选择: 方案一: 使用node-ffi 方案二: 使用C++编写一个node addon,通过LoadLibrary调用dll 以上两种方案都可以解决dll调用问题,方案选型要个人对C++ 的掌握程度,如果熟悉C++开发,可以直接选择方案二最方便.如果完全不了解C++,那么只能采用方案一. 由于笔主不太懂C++,最

  • C#调用Python模块的方法

    当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用C#来调用Python. 如果让C#支持调用Python模块,我们首先需要安装一些扩展,这里推荐使用IronPython库. 第一步,我们需要下载IronPython库的安装包,这里请大家移步官网http://ironpython.codeplex.com/,下载并安装相关库文件. 第二步,我们新建一个C#控制台测试项目,并将IronPython安装目录中的

  • ASP.net WebAPI跨域调用问题的解决方法

    发现问题 最近在做一个项目,前端是VUE,后端是WebAPI,业务也就是一些实体的增删改查.在项目开始的时候我就预计到有跨域的问题,所以也找了一下资料,在Web.Config里面加上了配置信息: <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-A

  • 易语言调用易模块的方法

    易模块就是,易语言前辈把一些函数.常用的子程序. 编辑起来,方便新手学习! 1.打开易语言,里面,窗口程序.控制程序.动态连接库.易语言模块. 这里面可以用到模块的有[窗口程序.控制程序.动态连接库.]易语言模块是编写易模块的程序. 2.我们就以窗口程序程序进行操作,点击进入[双击]. 进入设计面板,点击[程序],在点击[模块引用],然后[添加模块] 1.使用方法 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 2.在打开易语言模块信息

  • Electron 如何调用本地模块的方法

    Electron 结合了 Chromium.Node.js 和用于调用操作系统本地功能的 API(如打开文件窗口.通知.图标等,基于 Electron 的开发,就好像开发一个网页一样,而且能够无缝地使用 Node.或者说:就好像构建一个 Node app,并通过 HTML 和 CSS 构建界面. 那么如何在页面中调用 Node API 呢? 碰到了一些坑- 先从页面加载方式说起,Electron 中加载页面的方式有两种: 一种是直接加载本地文件,另一种是通过 http 网络请求页面. //方法1

  • python操作jira添加模块的方法

    目录 JIRA介绍: python操作jira 首先安装jira模块 导入jira模块 编写添加模块代码 获取当前项目的模块信息 从excel表读取信息 主方法中调用添加模块等方法 JIRA介绍: JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 在开发工作中,Jira通常用作BUG管理和任务跟踪管理等,项目经理,测试人员,开发人员等在Jira上进行提交BUG,提交任务,修改任务进度等操作. 当项目逐渐多

  • ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

    本文实例讲述了ThinkPHP3.2.3框架实现的空模块.空控制器.空操作,跳转到错误404页面.分享给大家供大家参考,具体如下: [演示准备] 首先下载了一个ThinkPHP3.2.3,目录结构如下:(只有Home模块.Index控制器.index操作方法) 然后找了一个简易的错误404页面404.html放到了根目录: [空模块] 访问一个不存在的模块Admin,错误提示: 修改根目录下 ThinkPHP/Library/Think/Dispatcher.class.php 178行代码:

  • pycharm如何实现跨目录调用文件

    笔者今天在一个测试qq群中遇到解决跨目录中调用文件的问题.现在来总结一下. 以下图目录为例: 1.同目录下直接调用掉用.test2.py和test3.py在同一个目录test2下. 所以在test3.py调用test2.py可以直接调用的 import test2即可使用test2中所有的方法 2.跨目录调用,需要增加调用文件的目录.以test3.py中调用test1.py为例 在test3.py中增加test1.py所在目录下的路径.可以是相对路径也可以是绝对路径. 步骤:导入sys模块,然在

  • vs2019 Com组件初探之简单的COM编写及实现跨语言调用的方法

    前提条件 1.掌握C++基础语法 2.平台安装 vs2019 3.本地平台为 windows 10 1909 X64 4.了解vbs基础语法 本次目标 1.掌握Com组件的概念及原理 2.编写一个简单的以DLL形式展现的Com组件 3.通过 VBS 实现跨语言调用COM 1.Com组件概念及原理 什么是COM: 引用百度百科:COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术.在COM构架下,人们可以开发出各种各样的功能专一

随机推荐