PHP实现事件机制的方法
本文实例讲述了PHP实现事件机制的方法。分享给大家供大家参考。具体如下:
<?php /** *事件 */ classEvent{ private$callbacks=array(); private$holder; function__construct(){ $bt=debug_backtrace(); if(count($bt)<2){ $this->holder=null; return; } $this->holder=&$bt[1]['object']; } functionattach(){ $args=func_get_args(); switch(count($args)){ case1: if(is_callable($args[0])){ $this->callbacks[]=$args[0]; return; } break; case2: if(is_object($args[0])&&is_string($args[1])){ $this->callbacks[]=array(&$args[0],$args[1]); } return; default: return; } } functionnotify(){ $bt=debug_backtrace(); if($this->holder&& ((count($bt)>=2&&$bt[count($bt)-1]['object']!==$this->holder) ||(count($bt)<2))){ throw(newException('Notifycanonlybecalledinholder')); } foreach($this->callbacksas$callback){ $args=func_get_args(); call_user_func_array($callback,$args); } } }
希望本文所述对大家的php程序设计有所帮助。