thinkphp 操作绑定到类
定义
ThinkPHP3.2版本提供了把每个操作方法定位到一个类的功能,可以让你的开发工作更细化,可以设置参数ACTION_BIND_CLASS,例如:
'ACTION_BIND_CLASS' => True,
设置后,我们的控制器定义有所改变,以URL访问为 http://serverName/Home/Index/index
为例,原来的控制器文件定义位置为:
Application/Home/Controller/IndexController.class.php
控制器类的定义如下:
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
public function index(){
echo '执行Index控制器的index操作';
}
}
可以看到,实际上我们调用的是 Home\Controller\IndexController
类的index方法。
设置后,控制器文件位置改为:
Application/Home/Controller/Index/index.class.php
控制器类的定义如下:
namespace Home\Controller\Index;
use Think\Controller;
class index extends Controller{
public function run(){
echo '执行Index控制器的index操作';
}
}
现在,我们调用的其实是 Home\Controller\Index\index
类的run方法。
run方法依旧可以支持传入参数和进行Action参数绑定操作,但不再支持A方法实例化和R方法远程调用,我们建议R方法不要进行当前访问控制器的远程调用。
前置和后置操作
当设置操作方法绑定到类后,前置和后置操作的定义有所改变,只需要在类里面定义_before_run
和_after_run
方法即可,例如:
namespace Home\Controller\Index;
use Think\Controller;
class index extends Controller{
public function _before_run(){
echo 'before_'.ACTION_NAME;
}
public function run(){
echo '执行Index控制器的index操作';
}
public function _after_run(){
echo 'after_'.ACTION_NAME;
}
}
空控制器
操作方法绑定到类后,一样可以支持空控制器,我们可以创建 Application/Home/Controller/_empty
目录,即表示如果找不到当前的控制器的话,会到_empty控制器目录下面定位操作方法。
例如,我们访问了URL地址 http://serverName/Home/Test/index
,但并不存在 Application/Home/Controller/Test
目录,但是有定义 Application/Home/Controller/_empty
目录。
并且我们有定义:
Application/Home/Controller/_empty/index.class.php
控制器定义如下:
namespace Home\Controller\_empty;
use Think\Controller;
class index extends Controller{
public function run(){
echo '执行'CONTROLLER_NAME.'控制器的'.ACTION_NAME.'操作';
}
}
访问http://serverName/Home/Test/index
后 输出结果显示:
执行Test控制器的index操作
空操作
操作绑定到类后,我们依然可以实现空操作方法,我们只要定义一个 Home\Controller\Index\_empty
类,就可以支持Index控制器的空操作访问,例如: 控制器定义如下:
namespace Home\Controller\Index;
use Think\Controller;
class _empty extends Controller{
public function run(){
echo '执行Index控制器的'.ACTION_NAME.'操作';
}
}
当我们访问http://serverName/Home/Index/test
后 输出结果显示:
执行Index控制器的test操作
thinkphp 操作绑定到类的更多相关文章
- cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用
cocos2dx的3.x版本已经提供了更好地绑定方式,网上有很多相关的教程,这里给一个链接:http://www.cocoachina.com/bbs/read.php?tid=196416. 由于目 ...
- Hibernate_day02--课程安排_主键生成策略_对实体类crud操作_实体类对象状态
Hibernate_day02 上节内容 今天内容 实体类编写规则 Hibernate主键生成策略 实体类操作 对实体类crud操作 添加操作 根据id查询 修改操作 删除操作 实体类对象状态(概念) ...
- quick-cocos2d-x 创建自定义lua绑定c++类
内容主要参考 “在quick-cocos2d-x中添加自定义的类给lua使用” ( http://www.codeo4.cn/archives/746) 1. quick-coco2d-x 使用 to ...
- jQuery-介绍 加载 选择器 样式操作 属性操作 绑定click事件
jQuery - 介绍 加载 选择器 样式操作 属性操作 绑定click事件 注意:以下部分问题不能实现效果,因该是单词拼写错误(少个t)或者没有加引号(“swing”)... jquery介绍 jQ ...
- thinkphp 入口绑定
入口绑定是指在应用的入口文件中绑定某个模块,甚至还可以绑定某个控制器和操作,用来简化URL地址的访问. 绑定模块 例如,我们定义了一个入口文件admin.php,希望可以直接访问Admin模块,那么我 ...
- disruptor笔记之三:环形队列的基础操作(不用Disruptor类)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- C#操作CSV存取类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- cocos2dx lua 绑定之二:手动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...
- 自己封装的poi操作Excel工具类
自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...
随机推荐
- 框架_mybatis2使用注解
在dao中使用注解: package cn.dao; import cn.mepu.User; import org.apache.ibatis.annotations.Select; import ...
- java oop第15章_Socket网络编程
一. TCP/IP协议(Transmission Control Protocol/Internet Protocol)传输控制协议/Internet协议,是通信领域的基础.核心协议, 其他的协议 ...
- 5.1中容器(Container)和门面(Facade)的实现
tp5.1中引入了容器(Container)和门面(Facade)这两个新的类 官方文档已经给出了定义: 容器(Container)实现类的统一管理,确保对象实例的唯一性. 门面(Facade)为容器 ...
- 创建maven项目的时候:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. 解决办法
问题: https://yq.aliyun.com/ziliao/364921 尝试没成功. https://www.aliyun.com/jiaocheng/296712.html 尝 ...
- Java分页查询工具类
public class PageList<T> { private int totalpage; //总页数 private int totalcount; //总记录数 private ...
- luoguP1134 阶乘问题 [数论]
题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001, ...
- python 识别验证码自动登陆
# python 3.5.0 # 通过Chrom浏览器访问发起请求 # 需要对应版本的Chrom和chromdriver # 作者:linyouyi from selenium import webd ...
- APIO 2017 商旅 洛谷3778
Description 在广阔的澳大利亚内陆地区长途跋涉后,你孤身一人带着一个背包来到了科巴.你被这个城市发达而美丽的市场所 深深吸引,决定定居于此,做一个商人.科巴有个集市,集市用从1到N的整数编号 ...
- NX-二次开发删除对象UF_OBJ_delete_object
NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_obj.h> UF_initialize ...
- mobile开发技巧
1.隐藏地址栏 很多文档介绍通过调用 window.scrollTo(0, 1); 就可以隐藏地址栏,但是通过实践发现隐藏地址栏还是真够坑爹的啊,只调用这一句话一般不会起作用,我们需要 functio ...