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版
Oct 09 PHP
mysql5详细安装教程
Jan 15 PHP
用PHP 快速生成 Flash 动画的方法
Mar 06 PHP
php连接数据库代码应用分析
May 29 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
php文件缓存方法总结
Mar 16 PHP
PHP云打印类完整示例
Oct 15 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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入库和出库
2013/06/25 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
AJAX的使用方法详解
2017/04/29 PHP
document.documentElement的一些使用技巧
2013/04/18 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
简单了解python代码优化小技巧
2019/07/08 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
如何利用python读取micaps文件详解
2020/10/18 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
什么是跨站脚本攻击
2014/12/11 面试题
编辑找工作求职信范文
2013/12/16 职场文书
护士自我评价范文
2014/01/25 职场文书
村长贪污检举信
2014/04/04 职场文书
行政内勤岗位职责
2014/04/07 职场文书
商场租赁意向书
2014/07/30 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫