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安装全攻略:APACHE
Oct 09 PHP
PHP-MySQL教程归纳总结
Jun 07 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
iOS10推送通知开发教程
Sep 19 PHP
PHP的PDO预处理语句与存储过程
Jan 27 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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
Protoss热键控制
2020/03/14 星际争霸
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
python登录豆瓣并发帖的方法
2015/07/08 Python
python2.7安装图文教程
2018/03/13 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
python的继承知识点总结
2018/12/10 Python
python requests post多层字典的方法
2018/12/27 Python
Django对models里的objects的使用详解
2019/08/17 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
普通话演讲稿
2014/09/03 职场文书
十八大宣传标语
2014/10/09 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
好人好事新闻稿
2015/07/17 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
pytorch中的 .view()函数的用法介绍
2022/03/17 Python