<menu id="uuzns"><dd id="uuzns"></dd></menu>
  1. <big id="uuzns"></big>
    <mark id="uuzns"></mark>
      <meter id="uuzns"></meter>
    1. <td id="uuzns"><menuitem id="uuzns"><mark id="uuzns"></mark></menuitem></td>
      1. 辉煌电商SEO内测

        百度关键词优化三天上首页同行都是朋友 ?#38431;?#19968;起互利共赢谢绝一切非正规行业服务?#34892;?#20197;下同行团队?#25945;?#21644;代理的支持

        百度站长?#25945;MIP开发小组SEO焦大老友SEO每天一贴ZAC大哥卢松松大哥海瑶SEO兄弟附子SEO兄弟探索者SEO帮站SEO好友互点宝超快排?#25945;?

        百亿互刷宝下拉天下SEO自学网SEO研究?#34892;ġ?#23567;明SEO王德春SEO马海祥博客踏雪无痕挂机工作室SEO云优化好友云客网杭州思亿欧网赚吧北京SEO韩非老弟

        需要了解以上同?#23454;?#30456;关信息我们已经给你做好了搜索框看右上角绿色那个输入搜索即刻直达

        网站统计 共有读稿14437部 / 今日更新篇 / 评论19条 / 会员75 名 / 阅读1086083
        您好,请 登陆/注册
        软件内容页横幅广告

        PHP实现事件机制实例分析

        2018.04.20

        浏览:

        导语如果您觉得本篇内容还不错请点击文章下面的赞然后分享给朋友哦...

        PHP实现事件机制实例分析-破洛洛教学网...请看详情...

        seo

        seo

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

        内置了事件机制的语言不多php也没有提供这样的功能事件(Event)?#23548;?#21333;了就是一个Observer模式实现起?#26149;?#23481;易但是有所不同的是事件的监听者谁都可以加但是只能由直接包含它的对象触发这就有一点点难度了php有一个debug_backtrace函数可以得到当前的调用栈由此可以?#19994;?#21028;断调用事件触发函数的对象是不是直接包含它的对象的办法

        
        Observer的示意?#35745;? src=
        
        <?php
        /**
        * 事件
        *
        * @author xiezhenye <[email protected]>
        */
        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);
            }
          }
        }
        

        希望本文所述对大?#19994;php程序设计有所帮助

        0
        赞一个
        关键词
        ?#19981;?#36825;篇文章吗分享给你的好友吧点击这里复制网址
        共有53人阅读期待你的评论评论
        请先登陆后才能发表评论哦没账号赶紧注册一个吧
        最新评论
        热门标签
        回到顶部
        ʱʱʹٷ

          <menu id="uuzns"><dd id="uuzns"></dd></menu>
        1. <big id="uuzns"></big>
          <mark id="uuzns"></mark>
            <meter id="uuzns"></meter>
          1. <td id="uuzns"><menuitem id="uuzns"><mark id="uuzns"></mark></menuitem></td>
              1. <menu id="uuzns"><dd id="uuzns"></dd></menu>
              2. <big id="uuzns"></big>
                <mark id="uuzns"></mark>
                  <meter id="uuzns"></meter>
                1. <td id="uuzns"><menuitem id="uuzns"><mark id="uuzns"></mark></menuitem></td>