PHP实现事件机制的方法


Posted in PHP onJuly 10, 2015

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

<?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+SqlServer实现分页显示
Oct 09 PHP
NOT NULL 和NULL
Jan 15 PHP
PHP 实用代码收集
Jan 22 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
培养自己的php编码规范
Sep 28 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
php目录拷贝实现方法
Jul 10 #PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 #PHP
php中array_multisort对多维数组排序的方法
Jun 21 #PHP
php获取文件类型和文件信息的方法
Jul 10 #PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 #PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 #PHP
codeigniter实现get分页的方法
Jul 10 #PHP
You might like
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP模块memcached使用指南
2014/12/08 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
jquery插件开发注意事项小结
2013/06/04 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
Js apply方法详解
2017/02/16 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python序列操作之进阶篇
2016/12/08 Python
python列表的增删改查实例代码
2018/01/30 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
以太网Ethernet IEEE802.3
2013/08/05 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
护士感人事迹
2014/05/01 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
国家助学金受助感言
2015/08/01 职场文书
班主任工作总结范文
2015/08/13 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python