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与XML的PDF文档生成技术
Oct 09 PHP
不错的一篇面向对象的PHP开发模式(简写版)
Mar 15 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
php异常处理使用示例
Feb 25 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 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
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
浅谈Python中的bs4基础
2018/10/21 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python 多进程队列数据处理详解
2019/12/23 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
英文自荐信
2013/12/19 职场文书
成绩单家长评语大全
2014/04/16 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
总经理聘用协议书
2015/09/21 职场文书
Python如何将list中的string转换为int
2022/07/15 Ruby