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
php ajax 静态分页过程形式
Sep 02 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
Zend Framework基于Command命令行建立ZF项目的方法
Feb 18 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
php实现分页功能的详细实例方法
Sep 29 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+Html+缓存
2006/12/20 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
Django权限控制的使用
2021/01/07 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
荣耀商城:HIHONOR
2020/11/03 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
员工离职通知函
2015/04/25 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技