PHP实现事件机制的方法

 更新时间:2015年07月10日 10:50:35   作者:开元中国2015  
这篇文章主要介绍了PHP实现事件机制的方法,实例分析了php针对事件机制的定义与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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学习笔记之字符串编码的转换和判断

    GBK 和 UTF-8 编码的转换是一个非常恶心的事情,比如像 PHP 中的 json_encode 本身根本不支持 GBK 形式的编码。有两个库函数能够支持编码的转换,通常能够想到的就是 iconv 函数,使用起来也非常爽:
    2014-05-05
  • php实现数字转亿万单位的示例代码

    php实现数字转亿万单位的示例代码

    这篇文章主要为大家详细介绍了php如何实现数字转亿万单位,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • php上传功能集后缀名判断和随机命名(强力推荐)

    php上传功能集后缀名判断和随机命名(强力推荐)

    本篇文章给大家分享php上传功能集后缀名判断和随机命名,代码写的简单易懂,感兴趣的朋友快来参考下吧
    2015-09-09
  • Fastadmin中用户登录时TOKEN的交互方法

    Fastadmin中用户登录时TOKEN的交互方法

    Fastadmin中登录所有的操作都是基于User用户表进行的$this->auth,如果是别的用户表需要进行相关的改动。API跟Auth这两个类库里面进行系列操作即可。在需要获取用户信息的接口,前端需要在调用api的时候在头部传token,这个token在登录的时候返回给前端。
    2023-07-07
  • PHP页面间参数传递的四种方法详解

    PHP页面间参数传递的四种方法详解

    本篇文章是对PHP页面间参数传递的四种方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php使用Jpgraph创建折线图效果示例

    php使用Jpgraph创建折线图效果示例

    这篇文章主要介绍了php使用Jpgraph创建折线图效果,结合实例形式分析了php使用Jpgraph绘制折线图的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • PHP连接及操作PostgreSQL数据库的方法详解

    PHP连接及操作PostgreSQL数据库的方法详解

    这篇文章主要介绍了PHP连接及操作PostgreSQL数据库的方法,结合实例形式分析了php针对PostgreSQL数据库的基本连接以及增删改查等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • PHP中替换键名的简易方法示例详解

    PHP中替换键名的简易方法示例详解

    默认输出的时候,将数据库字段名作为数组的键名进行输出,但带有键名的数据不能够满足未知情况下的操作,下面为大家介绍个不错的方法可以解决这个问题
    2014-01-01
  • php批量删除数据

    php批量删除数据

    php批量删除数据...
    2007-01-01
  • PHP 验证码不显示只有一个小红叉的解决方法

    PHP 验证码不显示只有一个小红叉的解决方法

    做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,经搜索发现个不错的方法,有类似情况的朋友可以参考下
    2013-09-09

最新评论