php tp3 操作绑定到类,操作绑定到类 · ThinkPHP3.2.3完全开发手册 · 看云

## 定义

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操作

~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样快速掌握深度学习TensorFlow框架?

TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow实际上就是张量从流…

牛X,.NET6又双叒叕新版本,这是要起飞吗?

.NET6又双叒叕出新版本了,2月17号Preview1、3月11号Preview2、4月8号又Preview3了,密集的版本发布,各种新技术和改进优化,不禁要问一句,.NET6是要起飞吗?下面给大家科普下.NET6将带来的几大核心变化&#x…

外媒:谷歌攻击码由中国作者发布

英国金融时报(The Financial Times)报导,一名中国的自由安全顾问,撰写了利用IE6浏览器的攻击代码,而后被用来攻击谷歌等美国公司。 根据金融时报的报导,这名身份尚未曝光的程序设计师,将部分攻击…

用python挖一挖知乎上宅男们最喜欢的1000个妹子

在文章开始前,先来一张图给大家热热身。这里是宅男们最喜欢的妹子中排名前200位的头像(实际193张图,部分不规则的图已被二胖过滤)。排名不分先后哈!快来看看有没有你们熟悉的面孔。找到眼熟的人了吗?说不定…

在 .NET 6 Preview 3 ASP.NET Core 更新

.NET 6 Preview 3现在可用了,其中包括对ASP.NET Core的许多重大改进。这是此预览版本中的新增功能:更小的SignalR,Blazor Server和MessagePack scripts启用 Redis 分析会话HTTP/3 endpoint TLS配置初版的 .NET Hot Reload 支持Razor编译器不再…

matlab求滤波器的冲激响应,在TMS320C5410上用MATLAB实现有限冲激响应滤波器

在TMS320C5410上用MATLAB实现有限冲激响应滤波器许辉;许红【期刊名称】《计算机应用与软件》【年(卷),期】2003(020)007【摘要】介绍在TMS320C5410上尝试MATLAB语言编程实现FIR数字滤波器的方案,阐明其开发基本原理,并给出了具体程序实例.【总页数】3页(41-42,79)【关键词】数字…

单点登录在项目中的实现 转.

最近在做一个登录功能,纠结了好几天,一直在找一个能优雅的实现单点登录的功能。博客园有看到某人写了又臭又长的八股文式的文章,没看到有价值的东西。 其实单点登录最终要解决的是多个不同域名间共享cookie的问题。但是要在不同域名间共享coo…

趣图:程序员桌面对比,iOS vs 安卓

程序员桌面对比,iOS vs 安卓↓↓↓数据与算法之美用数据解决不可能长按扫码关注

如何在 ASP.Net Core 中使用 HTTP.sys WebServer ?

ASP.Net Core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的Web程序,大家都知道 Kestrel 是 ASP.Net Core 内置的跨平台web服务器,但是它有一定的局限性,比如不支持 端口共享 , WebSockets…

php图片上传 thinkphp5,thinkphp5图片上传接口

public function avatarUpload(){$file request()->file(‘file‘);$filePath ‘avatar‘;$width 200;$height 200;if($file){$filePaths ROOT_PATH . ‘public‘ . DS . ‘uploads‘ . DS .$filePath;if(!file_exists($filePaths)){mkdir($filePaths,0777,true);}$inf…

百度移动联盟(munion)-广告平台投放流程详细介绍 (绿色通道)

1. 百度平台官网介绍: http://hi.baidu.com/mobads/blog/ ... 1c7fc3bc3e1e2e.html2. AdView 官网介绍: 为开发者提供“AdView-百度” 绿色通道审核;提供除百度分成外额外AdView渠道分成;赚取更多,更稳定的广告费用&a…

linux命令查询邮件发送状态,Linux发邮件之mail命令详解

一、mail命令1.配置vim /etc/mail.rc文件尾增加以下内容set from1968089885qq.com smtp"smtp.qq.com"set smtp-auth-user"1968089885qq.com" smtp-auth-password"123456"set smtp-authlogin说明:from: 对方收到邮件时显示的发件人smt…

从一个骗局谈生活中的基础算法

曾经有一个著名的骗局:小明是一个赌马爱好者,最近他连续几次提前收到了预测赌马结果的邮件,从一开始由于不屑而错失良机,到渐渐深信不疑,直到最后给邮件发送方汇了巨款才发现上当。看过这个的人应该知道,骗…

用得最多的冒泡排序是不是少了个关键点?

前言冒泡排序应该是很多小伙伴的最爱,简单、直接、好理解;回顾以往参与和阅读的项目,凡是牵涉自定义排序的算法,很大一部分都在用冒泡,其中很多都忽略了一个关键点;来,咱们细细品…正文1. 冒泡排…

【POJ】【最小生成树】1789 Truck History

1 思路 题目链接。最小生成树&#xff08;MST&#xff09;问题。 2 代码 代码来自宇宙吾心博客。 #include <iostream> #include <limits> #include <cstring> using namespace std; const int N2001;char c[N][8]; // 保存字符串 int …

linux怎么搜索特定文件夹,linux如何在特定文件夹中查找特定文件

user188095724linuxfind这是我的文件夹结构:/site1/myFolder/otherFolder1/a.gif/site1/myFolder/otherFolder1/b.png/site1/myFolder/otherFolder1/c.php.../site2/myFolder/otherFolder2/d.gif/site2/myFolder/otherFolder2/e.png/site2/myFolder/otherFolder2/f.php.../site…

荐书 | 攻克世纪难题,拒绝领取菲尔兹奖的孤独数学天才的一生

今天小木给大家介绍五本数学科普文&#xff0c;了解了一些数学家研究数学、证明猜想的经历&#xff0c;他们的专研精神简直让小木五体投地&#xff01;这也验证了一句经典名言“念念不忘&#xff0c;必有回响”。希望我们都能把时间奉献给自己喜欢的事情上。下面&#xff0c;让…

C# 搭建自己的NuGet服务器,上传自定义NuGet包

第一步搭建NuGet服务器创建空Web项目安装Nuget服务&#xff0c;目前最新版本2.8.2安装完成&#xff0c;会自动生产服务&#xff0c;出现如下界面发布该网站&#xff0c;并部署至IIS将.nupkg文件发布至网站的Packages目录。在VS中修改NuGet引用路径注意把自定NuGet放在首位&…

在不同的ObjectContext中更新数据

第一个using中获取一些数据 User u; using (var db new Entities()) {u db.Users.First(); } 在using外改变 u.NickName "ABC"; 在第二个using中把改变更新到库 using (var db new Entities()) { …… db.SaveChanges(); } 在网上看了一些使用ApplyPropertyC…

5分钟理解一致性哈希算法

来自&#xff1a;cywosp链接&#xff1a;https://blog.csdn.net/cywosp/article/details/23397179一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希&#xff08;DHT&#xff09;实现算法&#xff0c;设计目标是为了解决因特网中的热点(Hot spot)问题&#xff0c;初衷…