位置: 编程技术 - 正文

浅谈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对称加密算法实验报告)

  • 购销合同印花税计税金额含税吗
  • 工程施工的间接费用怎么结转
  • 长期股权投资是金融资产还是非金融资产
  • 作废的发票验旧之后怎么领取新发票
  • 小规模纳税人的起征点是多少
  • 个税超过部分征税还是全部
  • 固定资产后续支出可以计入哪些费用
  • 加油电子普通发票可以抵扣增值税吗
  • 土地使用税退税账务处理
  • 销售煤炭增值税怎么算
  • 应付福利费直接计入未分配利润
  • 外购动力的分录
  • 职工福利基金提取规定
  • 小规模纳税人税费怎么算
  • 增值税普票新规定
  • 发票税额小数点后面没打印上能用吗
  • 租金收入的印花税税率是多少
  • 增值税普通发票可以抵扣吗
  • 增值税专用发票使用规定 最新
  • 外币账户和外汇账户一样吗?
  • 企业所得税为15%的企业
  • 高新技术企业研究开发费用加计扣除
  • PHP:oci_commit()的用法_Oracle函数
  • 招标公司在招标过程中的注意事项
  • 采用账龄分析法计提坏账准备
  • vue项目中使用opencv
  • 企业的支出包括
  • iqoo怎么开启无线充电
  • php实现二叉树
  • 建筑劳务公司何去何从
  • thinkphp update方法
  • 外经证有效期到了,可以续吗
  • 持有至到期投资账务处理
  • webstorm功能
  • typescript完全解读
  • 目标检测yolo
  • 企业进项税怎么查询
  • 工会经费缴纳后会返还吗
  • 福利费属于管理费吗
  • sqlserver2008新建实例
  • 生产成本明细科目有哪些内容
  • 以前年度损益调整借贷方向
  • 单位食堂用餐免费的账务处理
  • 机构信用代码证在哪里办理
  • 汇兑记载事项及内容
  • 公司没有销售收入
  • 息税前利润怎么算出来的
  • 当月进货没有认证怎么办
  • 存货报废计入
  • 原材料暂估差异调整
  • 出口退税进项税都抵扣了怎么办
  • 总公司可以开发票给分公司吗
  • 金蝶迷你版为什么打不开
  • 私营公司的钱怎么拿出来
  • 苹果电脑怎么锁文件夹
  • server.exe是什么
  • VirtualBox虚拟机免费
  • windows任务
  • Windows任务计划程序服务
  • vmware tools安装包在哪
  • centos用户添加到组
  • gacrunner.exe是什么
  • win7系统如何将插孔设置为ac97前面板
  • win7系统开机登录不了怎么修复
  • win10系统如何设置不休眠
  • win10的帮助系统在哪
  • js筛选器
  • opengl使用教程
  • javascript括号
  • nodejs word
  • intent传递数据的方法
  • 批处理清除保留扇区
  • 蓝牙协议栈包括
  • jquery中什么方法用于模拟光标悬停事件
  • 深入理解android卷1 pdf
  • js赋值input
  • 增值税9%税率适用范围2023
  • 合伙企业所得税账务处理
  • 特价机票包含燃油费和机场建设费吗
  • 盐城购车补贴2024
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设