PHP实现事件机制的方法
author:一佰互联 2019-04-27   click:158

本文实例讲述了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程序设计有所帮助。