本文实例讲述了PHP实现事件机制的方法。分享给大家供大家参考。具体如下:

/**

* 事件

*/

class Event {

private $callbacks = array();

private $holder;

function __construct() {

$bt = debug_backtrace();

if (count($bt) < 2) {

$this->holder = null;

return;

}

$this->holder = &$bt[1]['object'];

}

function attach() {

$args = func_get_args();

switch (count($args)) {

case 1:

if (is_callable($args[0])) {

$this->callbacks[]= $args[0];

return;

}

break;

case 2:

if (is_object($args[0]) && is_string($args[1])) {

$this->callbacks[]= array(&$args[0], $args[1]);

}

return;

default:

return;

}

}

function notify() {

$bt = debug_backtrace();

if ($this->holder &&

((count($bt) >= 2 && $bt[count($bt) - 1]['object'] !== $this->holder)

|| (count($bt) < 2))) {

throw(new Exception('Notify can only be called in holder'));

}

foreach ($this->callbacks as $callback) {

$args = func_get_args();

call_user_func_array($callback, $args);

}

}

}

希望本文所述对大家的php程序设计有所帮助。

php网页事件处理方法,PHP实现事件机制的方法相关推荐

  1. 【冷知识】获取网页所有的监听事件类型、方法。请认准getEventListeners

    获取事件列表 getEventListeners(window)//获取window绑定的所有监听事件列表//----------------------------------------getEv ...

  2. C#中串口组件的使用方法总结及上位机制作方法

    https://wenku.baidu.com/view/3e4bb41d227916888486d792.html

  3. 一文读懂SpringBoot中的事件机制

    一文读懂SpringBoot中的事件机制?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法. 要"监听"事件,我们总是 ...

  4. 【EventBus】EventBus 源码解析 ( 事件发送 | postToSubscription 方法 | EventBus 线程模式处理细节 )

    文章目录 一.事件发送 postSingleEventForEventType 方法 二.事件发送 postToSubscription 方法 三.事件发送 invokeSubscriber 方法 一 ...

  5. Framework事件机制—Android事件处理的三种方法

    1.1.背景 Android的事件处理的三种方法: 1.基于监听的事件处理机制 setOnClickListener,setOnLongClickListener.setOnTouchListener ...

  6. jQuery中的事件机制深入浅出

    昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...

  7. 【初窥javascript奥秘之事件机制】论“点透”与“鬼点击”

    前言 最近好好的研究了一番移动设备的点击响应速度,期间不断的被自己坑,最后搞得焦头烂额,就是现在可能还有一些问题,但是过程中感觉自己成长不少, 最后居然感觉对javascript事件机制有了更好的认识 ...

  8. 深入理解DOM事件机制系列第四篇——事件模拟

    前面的话 事件是网页中某个特别的瞬间,经常由用户操作或通过其他浏览器功能来触发.但实际上,也可以使用javascript在任意时刻来触发特定的事件,而此时的事件就如同浏览器创建的事件一样.本文将详细介 ...

  9. JS的线程机制与事件机制

    JS的线程机制与事件机制 前言 一.进程与线程的概念 二.浏览器内核 概念 三.思考定时器 1. 定时器真的是定时执行的吗? 2. 定时器回调函数是在哪个线程执行的? 3. 定时器是如何执行的? 四. ...

最新文章

  1. NestIn VS插件 visual studio 中将同类CS文件放在一起显示
  2. 【python】-socketServer
  3. 您为了什么而学?【一入红尘深似海 勿负天下有心人】
  4. mysql账户dpzs_MySQL添加授权的用户命令实际操作
  5. Rational AppScan 标准版可扩展性和二次开发能力简介
  6. oracle联机文档使用,Sqlplus 联机文档学习
  7. WindowsXP打开和关闭硬盘各分区的默认共享
  8. linux 解压 7z 乱码,7z-linux下解决中文名乱码的终极办法
  9. winrar注册码激活码
  10. 计算机答辩ppt演讲稿,毕业答辩PPT演讲稿开场白
  11. Ruby(了解第二天)
  12. Mac OS X 背后的故事(九)半导体的丰收(中)
  13. forward与sendRedirect区别
  14. Windows Server 2022 开始,DNS 客户端支持 DNS over-HTTPS (DoH)
  15. 2019.1.21【NOIP提高组】模拟B组 JZOJ 4208 线段树什么的最讨厌了
  16. 如何搭建一个网站 -- 搭建一个网站需要多少钱
  17. 有了这个sku分析!老板再也不用担心我不会选款备货了
  18. 基于ROS的qbo机器人
  19. PostgreSQL 用户和角色管理
  20. YOLOv5/v7 更换骨干网络之 PP-LCNet

热门文章

  1. Java设计模式学习总结(3)——创建型模式之抽象工厂模式
  2. Java设计模式学习总结(1)——设计模式简介
  3. Java基础学习总结(126)——Log4j2.xml生产环境实用配置
  4. Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
  5. lisp的vla函数画矩形_利用Lisp做Tin三角网建模(源代码)
  6. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏
  7. 宁夏大学新华学院08计算机马宁,公 示
  8. linux(一)export的生命周期
  9. 解读系统资质审批的相关政策
  10. 递归总结 By greenhand