YII框架实现自定义第三方扩展操作示例


Posted in PHP onApril 26, 2019

本文实例讲述了YII框架实现自定义第三方扩展操作。分享给大家供大家参考,具体如下:

YII框架实现自定义第三方扩展操作示例

cat.php

<?php
/**
 * Created by PhpStorm.
 * Date: 2016/5/25
 * Time: 15:23
 */
namespace vendor\animal;
use \yii\base\Component;//组件
use \yii\base\Event;//
class myEvent extends Event{
  public $message;
}
class Cat extends Component{
  public function shout(){
    echo "miao miao miao<br>";
    //$this->trigger('miao');//事件命名
    $me = new myEvent();
    $me->message = "hello my Event<br>";
    $this->trigger('miao',$me);
  }
}

Dog.php

<?php
/**
 * Created by PhpStorm.
 * Date: 2016/5/25
 * Time: 17:00
 */
namespace vendor\animal;
use frontend\behaviors\behavior1;
use yii\base\Component;//让一个类拥有接收行为的能力
class Dog extends Component{
  public function behaviors(){
    return [
      Behavior1::className(),
    ];
  }
  public function look()
  {
    echo "I am looking!<br>";
  }
}

Mouse.php

<?php
/**
 * Created by PhpStorm.
 * Date: 2016/5/25
 * Time: 15:23
 */
namespace vendor\animal;
class Mouse{
  public function run($e)
  {
    echo $e->message;
    echo "I am running!<br>";
  }
}

controllers/AnimalController.php 调用第三方类库

<?php
/**
 * Created by PhpStorm.
 * Date: 2016/5/25
 * Time: 15:27
 */
//YII事件绑定
namespace frontend\controllers;
use yii;
use yii\web\Controller;
use vendor\animal\Cat;
use vendor\animal\Mouse;
use vendor\animal\Dog;
use \yii\base\Event;//类级别的事件绑定必须
use frontend\behaviors\Behavior1;//对象的混合
class AnimalController extends Controller{
  public function actionIndex(){
    $cat = new Cat();
    $mouse = new Mouse();
    $dog = new Dog();
    //对象级别的事件绑定
    $cat->on('miao',[$mouse,'run']);
    $cat->on('miao',[$dog,'look']);
//
//    $cat->off('miao',[$dog,'look']);//取消关注
    //类级别的事件绑定
//    Event::on(Cat::className(),'miao',[$mouse,'run']);//所有的老鼠都会监听这个miao事件
//    Event::on(Cat::className(),'miao',function(){
//      echo "miao event has triggerd!<br>";
//    });
    $cat->shout();
    //\Yii::$app是YII实现的单例模式
//    Yii::$app->on(\yii\base\Application::EVENT_AFTER_REQUEST,function(){
//      echo "event after request";
//    });
  }
  public function actionBehavior()//类的混合
  {
    /*板块1
     * $dog = new Dog();
    $dog->look();
    $dog->eat();*/
    $dog=new Dog();
    $dog->trigger("wang");
  }
  public function actionObject()//对象的混合
  {
    $dog = new Dog();
    $behavior1 = new Behavior1();
    $dog->attachBehavior('beh1',$behavior1);//取个别名,防止冲突
    //$dog->detachBehavior('beh1');//移除对象
    $dog->eat();
  }
}

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

PHP 相关文章推荐
人大复印资料处理程序_补充篇
Oct 09 PHP
php设计模式小结
Feb 15 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
PHP数据类型的总结分析
Jun 13 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 PHP
深入分析PHP设计模式
Jun 15 PHP
PHP中PCRE正则解析代码详解
Apr 26 #PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 #PHP
PHP实现字符串的全排列详解
Apr 24 #PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 #PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 #PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 #PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 #PHP
You might like
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
django允许外部访问的实例讲解
2018/05/14 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python交易记录整合交易类详解
2019/07/03 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
市场营销专业推荐信
2013/11/03 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
消防演习通知
2015/04/25 职场文书
文明旅游倡议书
2015/04/28 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python