• 技术文章 >后端开发 >php教程

    PHP实现事件机制实例分析,php事件实例分析_PHP教程

    2016-07-13 09:48:23原创412

    PHP实现事件机制实例分析,php事件实例分析


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

    内置了事件机制的语言不多,php也没有提供这样的功能。事件(Event)说简单了就是一个Observer模式,实现起来很容易。但是有所不同的是,事件的监听者谁都可以加,但是只能由直接包含它的对象触发。这就有一点点难度了。php有一个debug_backtrace函数,可以得到当前的调用栈,由此可以找到判断调用事件触发函数的对象是不是直接包含它的对象的办法。

    <?php
    /**
    * 事件
    *
    * @author xiezhenye 
    */
    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程序设计有所帮助。

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1022778.htmlTechArticlePHP实现事件机制实例分析,php事件实例分析 本文实例讲述了PHP实现事件机制的方法。分享给大家供大家参考。具体分析如下: 内置了事件...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 事件机制 自动运行
    上一篇:PHP微信开发之二维码生成类,php生成_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 求解:phpcms模板怎样转码?该怎么解决• 想请问一下印证的有关问题• PHP怎么调用其它语言程序 • php 之 cookie 跟 session 简单解读(笔记) • 关于PHP输出XML文件的有关问题
    1/1

    PHP中文网