位置: 编程技术 - 正文

浅谈PHP中如何实现Hook机制(php实验步骤)

编辑:rootadmin

推荐整理分享浅谈PHP中如何实现Hook机制(php实验步骤),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php操作步骤,php运用,php实战,php如何实现,php实战,浅谈php中如何实现数据,php如何实现,浅谈php中如何实现数据,内容如对您有帮助,希望把文章链接给更多的朋友!

对"钩子"这个概念其实不熟悉,最近看到一个php框架中用到这种机制来扩展项目,所以大概来了解下。

所谓Hook机制,是从Windows编程中流行开的一种技术。其主要思想是提前在可能增加功能的地方埋好(预设)一个钩子,这个钩子并没有实际的意义,当我们需要重新修改或者增加这个地方的逻辑的时候,把扩展的类或者方法挂载到这个点即可。

hook插件机制的基本思想:

在项目代码中,你认为要扩展(暂时不扩展)的地方放置一个钩子函数,等需要扩展的时候,把需要实现的类和函数挂载到这个钩子上,就可以实现扩展了。

思想就是这样听起来比较笼统,看一个网上的实现的例子。

整个插件机制包含三个部分:

1.hook插件经理类:这个是核心文件,是一个应用程序全局Global对象。它主要有三个职责

浅谈PHP中如何实现Hook机制(php实验步骤)

1>监听已经注册了的所有插件,并实例化这些插件对象。

2>注册所有插件。

3>当钩子条件满足时,触发对应的对象方法。

2.插件的功能实现:这大多由第三方开发人员完成,但需要遵循我们(经理类定义)的规则,这个规则是插件机制所规定的,因插件机制的不同而不同。

3.插件的触发:也就是钩子的触发条件。这是一小段代码,放置在你需要调用插件的地方,用于触发这个钩子。

----------------------------------看一看别人实现的方案--------------------------------

首先是插件经理类PluginManager,这个类要放在全局引用里面,在所有需要用到插件的地方,优先加载。

接下来是一个简单插件的实现DEMO_actions。这是一个简单的Hello World插件,用于输出一句话。在实际情况中,say_hello可能包括对数据库的操作,或者是其他一些特定的逻辑。

再接下来就是插件的调用触发的地方,比如我要将say_hello放到我博客首页Index.php, 那么你在index.php中的某个位置写下:

第一个参数表示钩子的名字,第二个参数是插件对应方法的入口参数,由于这个例子中没有输入参数,所以为空。

这样一个例子基本上很明确的表达了"钩子"插件机制的实现方式和逻辑。

标签: php实验步骤

本文链接地址:https://www.jiuchutong.com/biancheng/275756.html 转载请保留说明!

上一篇:三个思路解决laravel上传文件报错:413 Request Entity Too Large问题(解决思路怎么写)

下一篇:PHP对称加密算法(DES/AES)类的实现代码(php对称加密算法实验报告)

  • 核定征收个体户个人经营所得税税率
  • 小规模销售收入要做销项税额吗
  • 小规模公司的外汇业务
  • 小规模纳税人出口可以退税吗
  • 厂区地面硬化属于土建还是市政
  • 工程款增值税专用发票如何开具
  • 幼儿园申报税种及税率
  • 一般纳税人能否享受残保金优惠
  • 幼儿园个税怎么交
  • 1%是什么税
  • 固定资产减少会怎么样
  • 供热企业采暖费收入免征增值税政策解读
  • 个人取得下列各项所得须自行申报纳税的有
  • 公司支付媒体广告费用必须签订合同吗?如果没有签订合同是否不能税前扣除?
  • 税收编码更改的依据是什么
  • 工程施工方安全责任
  • 现金流风险分析
  • 餐查账征收企业所得税会计分录?
  • 工会经费列支比例
  • mac老款设备怎样升级os14
  • 建筑行业预交增值税什么时候预交
  • linux 的ll
  • linux系统情况
  • 如何找到您会获得的权限
  • 银行本票实际金额小于票面金额
  • 担保余值包括
  • 产品成本核算应正确划分哪些方面的费用界限
  • php中strcmp函数
  • 应缴纳的房产税计入什么科目
  • 缴纳住房公积金现金流量项目填什么
  • css实现轮播图侧边阴影效果
  • 账面价值大于计税基础为啥为递延所得税负债
  • phpcms邀请注册送积分
  • 企业和银行对账多久对一次
  • 其他收益放在哪里
  • php call方法
  • 去年多计提的工资今年怎么冲
  • python缩进有什么作用
  • 固定资产转在建工程
  • 合营企业和联营企业构成关联方吗
  • 门禁卡一般属于什么卡
  • oracle 删除用户下所有表
  • 需要计提坏账准备的有哪些科目
  • windows下MySQL 5.7.3.0安装配置图解教程(安装版)
  • 商场进行打折促销活动,消费金额(p)
  • 进项税额转出冲回
  • 核销贷款收回账务怎么做
  • 坏账准备转回并收到货款会计分录
  • 客户退货不退赠品怎么办
  • 企业买房怎么入账
  • 银行承兑汇票去哪个银行承兑
  • 礼品费属于什么费用
  • 应付票据贴现借款
  • 管理费用贷方有余额怎么处理
  • 本月增值税申报截止日
  • mysql 5.7启动
  • centos安装编译环境
  • vista和win7哪个对配置要求高
  • 如何在xp系统中调整移动硬盘
  • xp系统怎么设置自动重启
  • imscmig.exe
  • 怎么修改抖音号
  • ftp自动上传文件到服务器
  • win7数据保护
  • win7复制过的内容在哪
  • linux中wget命令出现错误
  • win安装ie8
  • Immutable 在 JavaScript 中的应用
  • Perl的Mail::POP3Client模块和Gmail通信实例
  • perl列表去重
  • nodejs 异步io底层原理
  • unity3d操作
  • jQuery中$.ajax()方法参数解析
  • javascript的对象有哪些
  • python3.8.3怎么用
  • android使用方法
  • jquery 菜单
  • 深圳税务局工作时间表
  • 北京市国家税务网
  • 社保缴费电子回单在哪里截图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设