Thinkphp 框架扩展之行为扩展原理与实现方法分析


Posted in PHP onApril 23, 2020

本文实例讲述了Thinkphp 框架扩展之行为扩展原理与实现方法。分享给大家供大家参考,具体如下:

系统核心提供的标签位置包括下面几个(按照执行顺序排列):

app_init 应用初始化标签位
path_info PATH_INFO检测标签位
app_begin 应用开始标签位
action_name 操作方法名标签位
action_begin 控制器开始标签位
view_begin 视图输出开始标签位
view_parse 视图解析标签位
template_filter 模板内容解析标签位
view_filter 视图输出过滤标签位
view_end 视图输出结束标签位
action_end 控制器结束标签位
app_end 应用结束标签位

在每个标签位置,可以配置多个行为定义,行为的执行顺序按照定义的顺序依次执行。除非前面的行为里面中断执行了(某些行为可能需要中断执行,例如检测机器人或者非法执行行为),否则会继续下一个行为的执行。 行为定义: 通过Common\Conf\tags.php配置文件定义,格式如下:

<?php
return array(
  'action_begin'=>array('Home\\Behaviors\\TestBehavior','Home\\Behaviors\\Test1Behavior'), 
);

上面注册了两个行为,分别是Home模块下的test和test1行为,类文件位于Home模块目录下的Behaviors目录,可以自定义目录。

行为必须是一个包含命名空间路径的类,如上的 Home\Behaviors\TestBehavior 对应的类是 Home/Behaviors/TestBehavior.class.php

除了这些系统内置标签之外,开发人员还可以在应用中添加自己的应用标签。 比如在控制器的_initialize方法中:

\Think\Hook::add('action_begin','Home\\Behaviors\\TestBehavior');
//同时添加多个行为,只要将第二个参数换成数组即可。

行为类的定义,以上面的test行为为例:

<?php
namespace Home\Behaviors;
class TestBehavior extends \Think\Behavior{
  //行为执行入口
  public function run(&$param){
 
  }
}

行为类建议继承\Think\Behavior,必须实现run(&$param)方法,行为是通过这个方法执行的。

行为的触发: 只要在合适的地方通过以下代码

\Think\Hook::listen('标签名'[,参数]);
// 或者
// tag('标签名'[,参数]);

当应用执行到这个地方的时候将自动触发指定标签名下的所有行为类。

isten方法可以传入并且只接受一个参数,如果需要传入多个参数,请使用数组,该参数为引用传值,所以只能传入变量。 参数可以被run(&$param)中的$param接收。

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

PHP 相关文章推荐
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
关于file_get_contents返回为空或函数不可用的解决方案
Jun 24 PHP
常用PHP框架功能对照表
Oct 23 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 #PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 #PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 #PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 #PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 #PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 #PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 #PHP
You might like
PHP页面间传递参数实例代码
2008/06/05 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
python实现数据库跨服务器迁移
2018/04/12 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
Django权限控制的使用
2021/01/07 Python
python实现银行账户系统
2021/02/22 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
教师实习自我鉴定
2013/12/18 职场文书
教师申诉制度
2014/01/29 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
给校长的建议书100字
2014/05/16 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年禁毒工作总结
2015/04/30 职场文书