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版(4)
Oct 09 PHP
PHP脚本数据库功能详解(中)
Oct 09 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
php中define用法实例
Jul 30 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
轻松实现php文件上传功能
Feb 17 PHP
php strftime函数的详细用法
Jun 21 PHP
php新建文件的方法实例
Sep 26 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP读取XML值的代码(推荐)
2011/01/01 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
JavaScript类库D
2010/10/24 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
python Django批量导入不重复数据
2016/03/25 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
详解django2中关于时间处理策略
2019/03/06 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
商场总经理岗位职责
2014/02/03 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
升旗仪式主持词
2014/03/19 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python