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中的日期及时间
Nov 23 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
php连接mysql数据库
Mar 21 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
laravel框架的安装与路由实例分析
Oct 11 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 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
信息滚动效果的实例讲解
2017/09/18 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
使用FormData实现上传多个文件
2018/12/04 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
Python常用断言函数实例汇总
2020/11/30 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
工作失误检讨书
2015/01/26 职场文书
义诊活动总结
2015/02/04 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书