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
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
浅析PHP开发规范
Feb 05 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 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 高性能书写
2010/12/11 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
sina的lightbox效果。
2007/01/09 Javascript
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
JS实现打字游戏
2019/12/17 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
python获取网页状态码示例
2014/03/30 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
在python中求分布函数相关的包实例
2020/04/15 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
个人实用的自我评价范文
2013/11/23 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
英语生日邀请函
2014/01/23 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书