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 相关文章推荐
如何在PHP中使用Oracle数据库(1)
Oct 09 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
php checkbox 取值详细说明
Aug 19 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
Apache服务器无法使用的解决方法
May 08 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
微信企业转账之入口类分装php代码
Oct 01 PHP
php源码的安装方法和实例
Sep 26 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
使用adodb lite解决问题
2006/12/31 PHP
php遍历目录方法小结
2015/03/10 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP重载基础知识回顾
2020/09/10 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python实现多线程的两种方式
2016/05/22 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Django实现基于类的分页功能
2019/10/31 Python
Python如何读写CSV文件
2020/08/13 Python
python中温度单位转换的实例方法
2020/12/27 Python
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
新书吧创业计划书
2014/01/31 职场文书
语文教学感言
2014/02/06 职场文书
益达广告词
2014/03/14 职场文书
会议通知
2015/04/15 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python