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数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
php中的静态变量的基本用法
Mar 20 PHP
laravel安装和配置教程
Oct 29 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
PHP多态代码实例
Jun 26 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 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/02/16 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php读取mysql的简单实例
2014/01/15 PHP
微信红包随机生成算法php版
2016/07/21 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
python爬虫添加请求头代码实例
2019/12/28 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
十月份红领巾广播稿
2014/01/22 职场文书
行政部岗位职责范本
2014/03/13 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
公司放假通知范文
2015/04/14 职场文书
小学庆六一主持词
2015/06/30 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
pytorch 使用半精度模型部署的操作
2021/05/24 Python
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL