• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    再谈Yii Framework框架中的事件event原理与应用

    本文实例讲述了Yii Framework框架中的事件event原理与应用。分享给大家供大家参考,具体如下:

    再谈Yii Framework中的事件event,我写过的关于Yii事件event的另一篇文章

    Yii Framework 中事件和行为的区别和应用 https://www.jb51.net/article/184208.htm

    假设有类MyComponent,它是继承于CComponent,通过查看 CComponent 的 __set() 方法,

    public function __set($name,$value)
    {
      $setter='set'.$name;
      if(method_exists($this,$setter))
        return $this->$setter($value);
      else if(strncasecmp($name,'on',2)===0  method_exists($this,$name))
      {
        // duplicating getEventHandlers() here for performance
        $name=strtolower($name);
        if(!isset($this->_e[$name]))
          $this->_e[$name]=new CList;
        return $this->_e[$name]->add($value);
      }
      else if(is_array($this->_m))
      {
        foreach($this->_m as $object)
        {
          if($object->getEnabled()  (property_exists($object,$name) || $object->canSetProperty($name)))
            return $object->$name=$value;
        }
      }
      if(method_exists($this,'get'.$name))
        throw new CException(Yii::t('yii','Property "{class}.{property}" is read only.',
          array('{class}'=>get_class($this), '{property}'=>$name)));
      else
        throw new CException(Yii::t('yii','Property "{class}.{property}" is not defined.',
          array('{class}'=>get_class($this), '{property}'=>$name)));
    }
    
    

    第四行可知,我们可以通过 onXXX 来直接设置事件的。

    绑定到全局事件处理

    方法一:

    直接在main.php里面定义

    /***************************************************
    在我们想要的内容的前后出现了这些代码
    只是为了说明,我们添加的内容是要放在
    这个配置数据的一维里面。
    'import'=>array(
      'application.models.*',
      'application.components.*',
      'application.helpers.*',
    ),
    'defaultController'=>'post',
    ***************************************************/
    
    //其它代码
    'import'=>array(
      'application.models.*',
      'application.components.*',
      'application.helpers.*',
    ),
    
    /************** 这才是我们想要添加的代码 **************/
    'onBeginRequest' => array('MyEventHandler', 'MyEventHandlerMethod'),
    
    'defaultController'=>'post',
    //其它代码
    
    

    方法二:

    //参考自framework/logging/CLogRouter.php的init()方法
    Yii::app()->attachEventHandler('onEndRequest',array($this,'processLogs'));
    
    

    绑定到局部事件处理

    随时随地无论在controller还是model里面,只要是CComponent的子类,都可以这样定义,

    $myComponent->onClick = $callback;
    
    

    这里的 $callback 指向了一个有效的 PHP 回调。它可以是一个全局函数也可以是类中的一个方法。

    如果是后者,它必须以一个数组的方式提供 : array($object,'methodName')

    其它文章推荐:

    Yii组件的事件机制分析 https://www.jb51.net/article/184203.htm

    更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 从零开始学YII2框架(六)高级应用程序模板
    • yii2高级应用之自定义组件实现全局使用图片上传功能的方法
    • YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解
    • YII Framework框架教程之使用YIIC快速创建YII应用详解
    • Yii2框架redis基本应用示例
    • Yii框架学习笔记之应用组件操作示例
    • Yii框架常见缓存应用实例小结
    • Yii Framework框架中事件和行为的区别及应用实例分析
    • Yii框架应用组件用法实例分析
    • Yii 框架应用(Applications)操作实例详解
    上一篇:Yii Framework框架中事件和行为的区别及应用实例分析
    下一篇:为你的 Laravel 验证器加上多验证场景的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    再谈Yii Framework框架中的事件event原理与应用 再谈,Yii,Framework,框架,中的,