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

简介: 原文:Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)【空操作处理】 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()”   用户访问一个不存在的操作—》解决:给每个控制器都定义个_empty()方法来处理     第二个解决方法:定义一个空操作 【空模块处理】 我们使用一个类,但是现在这个类还没有被include进来。
原文: Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

【空操作处理】

看下列图:

实际情况:我们的User控制器没有hello()这个方法

一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()”

  用户访问一个不存在的操作—》解决:给每个控制器都定义个_empty()方法来处理

 

  第二个解决方法:定义一个空操作

【空模块处理】

我们使用一个类,但是现在这个类还没有被include进来。

我们可以通过自动加载机制处理__autoload(),如果这个自动加载机制也没有找到这个类,就会报错。

即是请求一个空模块

  解决一:定义一个空的控制器、空模块

  解决方法二:

【给应用增加函数库文件】

在Common文件夹里面,便是放入我们函数库文件的地方

【模块分组】

  1. 控制器进行分组设置

  2. 视图模板需要分组

  3. 配置变量需要分组

  4. 做配置config.php

【前置操作、后置操作】

控制器里边的方法在被调用的时候,在调用之前、或调用之后可以做一些额外的工作,就称之为前置操作、后置操作

当我们请求这个网址:http://网址/index.php/Admin/Goods/zhanshi,在方法存在的情况下,这个动作在哪发生的,App.class.php  的exec()方法里边

里面的前置操作,能够在zhanshi()被执行时,先执行

里面的后置操作,能够在zhanshi()被执行后,再执行

  一个类里边有许多方法,都需要前置和后置操作,应该如何解决?

解决:

【跨模块调用】

实例化一个不存在的类,会通过__autoload()自动加载机制。

tp框架的__autoload()在哪?在Think.class.php

通过A()方法实例化控制器对象

  A(‘模块控制器’)   例如:A(‘Goods’)

  A(‘分组/控制器’)   例如:A(‘home/Ucenter’);

  A(‘项目://分组/控制器’)  例如:A(‘shop://home/Ucenter’);

    A()方法里边有嵌套调用import()方法,该方法帮助我们获得对应的控制器其,并require引入。A()方法顺便直接new 实例化对象

 

R(“项目://分组/控制器/操作”)方法

  是把控制器的引入、实例化对象、方法的调用都给继承好了。

  R(‘模块控制器/操作’)   例如:A(‘Goods’)

  R(‘分组/控制器/操作’)   例如:A(‘home/Ucenter/members’);

  R(‘项目://分组/控制器/操作’)  例如:A(‘shop://home/Ucenter/members’);

 

R()方法里边调用A()方法

A()方法里边调用import()方法

  A()方法使用

  R()方法使用

 

目录
相关文章
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
|
5月前
|
前端开发
SSM整合-前后台协议联调(列表功能、添加功能、添加功能状态处理、修改功能、删除功能)
SSM整合-前后台协议联调(列表功能、添加功能、添加功能状态处理、修改功能、删除功能)
35 0
|
19天前
|
JavaScript 前端开发 算法
< 封装公共导出模块:配合element实现提示 >
在 Vue + elementUi 开发中,我们偶尔会遇到需要导出的列表,或者指定位置的导出内容。在一个项目里面是十分常见的,但是由于导出代码有稍微有点长,不方便维护!基于项目开发需求,封装了一个公用的导出模块,模块入口提供了 四个参数,分别是:导出接口地址导出参数对象导出文件名称导出时选择的服务地址(需要配合config文件实现选择功能)。且基于信息安全问题,实现信息提示,当提示点击遵守规则才允许下载文件!
< 封装公共导出模块:配合element实现提示 >
|
1月前
|
存储 Java 关系型数据库
定时任务配置技巧:将表达式配置在业务员代码之外的方法
该文档介绍了三种不同的方法来定义和管理Java中的定时任务。首先,通过在数据库中创建一个表来存储定时任务的执行周期,并在Spring Boot应用中使用`@Scheduled`注解配合数据库查询来动态执行定时任务。其次,将定时任务的配置移动到Apollo配置中心,利用Apollo的配置能力来控制定时任务的执行。最后,使用Quartz框架并结合Apollo配置文件,动态地管理定时任务的触发间隔和执行时间。此外,还提到了在多机器环境中,可以使用分布式锁来避免任务重复,并推荐了xxl-JOB和elastic-job作为更专业的定时任务解决方案。
28 2
|
7月前
|
数据安全/隐私保护
fastadmin中写接口是时Validate规则验证自定义如何用
fastadmin中写接口是时Validate规则验证自定义如何用
|
11月前
|
敏捷开发 前端开发 Ruby
RailsAdmin如何实现自定义操作
RailsAdmin如何实现自定义操作
68 0
定义一个事件需要单独新建一个文件吗?底层原理是什么?
定义一个事件需要单独新建一个文件吗?底层原理是什么?
|
jenkins 测试技术 持续交付
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。
347 0
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
180 0
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)