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自定义第三方扩展的更多相关文章

  1. laravel中的自定义函数的加载和第三方扩展库加载

    l 1. 创建文件 app/Helpers/functions.php <?php // 示例函数 function foo() { return "foo"; } 2. 修 ...

  2. 让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】

    JAVA的时间日期处理一直是一个比较复杂的问题,大多数程序员都不能很轻松的来处理这些问题.首先Java中关于时间的类,从 JDK 1.1 开始,Date的作用很有限,相应的功能已由Calendar与D ...

  3. yii中第三方库

    yii中存在一些路径别名:ext:表示包含了所有第三方扩展的目录  参考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.namespac ...

  4. 自定义和扩展 SharePoint 2010 Server 功能区

    了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...

  5. (转)Bootstrap 之 Metronic 模板的学习之路 - (6)自定义和扩展

    https://segmentfault.com/a/1190000006815041 前面我们将 Metronic 的结构和源码大致浏览了一遍,Metronic 整个文件包有三百多兆,在实际项目中, ...

  6. 使用自定义脚本扩展程序自动执行 VM 自定义任务

     在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...

  7. 适用于 Windows 的自定义脚本扩展

    自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...

  8. WeUI教程/第三方扩展及其他UI框架对比

    WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一.包含button.cell.dialog. progress. toa ...

  9. yii安装redis扩展(Windows)

    yii安装redis扩展可以用不同的方式, 最简单便捷的是使用 composer 方式, 有的时候composer会出现一些问题(现在还弄不懂),可能是网络什么的原因吧~ 还可以使用手动安装的方式, ...

随机推荐

  1. k8s client-go源码分析 informer源码分析(3)-Reflector源码分析

    k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...

  2. Nginx禁止使用IP访问

    在nginx的访问日志中,会出现只显示IP,而不出现域名的情况,在经过尝试之后,是因为没有设置禁止IP访问导致的. 下面就是在配置文件中设置禁止IP访问,来实现日志文件中$host显示域名. vim ...

  3. 【多线程】创建线程方式一:继承Thread类

    创建线程方式一:继承Thread类 代码示例: /** * @Description 继承Thread类,重写run方法,调用start开启线程 * @Author hzx * @Date 2022- ...

  4. 【算法】选择排序(Selection Sort)(二)

    选择排序(Selection Sort) 选择排序(Selection-sort)是一种简单直观的排序算法.它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余 ...

  5. linux篇-图解cacti监控安装

    1登录 admin admin 2点击devices localhost 3进入配置保存 4保存 http服务要启动哦 5一步步做 6graph tree 7执行/usr/bin/php /var/w ...

  6. [SQLServer]NetCore中将SQLServer数据库备份为Sql脚本

    NetCore中将SQLServer数据库备份为Sql脚本 描述: 最近写项目收到了一个需求, 就是将SQL Server数据库备份为Sql脚本, 如果是My Sql之类的还好说, 但是在网上搜了一大 ...

  7. C语言复习_01

    auto 存储类是所有局部变量默认的存储类,auto 只能用在函数内,即 auto 只能修饰局部变量. { int mount; auto int month; } register存储类用于定义存储 ...

  8. MySql笔记Ⅰ

    MySql part 1: 数据库概念 数据库:(DataBase, 简称DB):数据库中的数据按一定的数据模型组织.描述和储存,具有较小的冗余度.较高的数据独立性和易扩展性,并可为各种 用户共享 数 ...

  9. PyTorch保存模型、冻结参数等

    此外可以参考PyTorch模型保存.https://zhuanlan.zhihu.com/p/73893187 查看模型每层输出详情 Keras有一个简洁的API来查看模型的每一层输出尺寸,这在调试网 ...

  10. Puppeteer学习笔记 (2)- Puppeteer的安装

    本文链接:https://www.cnblogs.com/hchengmx/p/11009849.html 1. node的下载安装 由于puppeteer是nodejs的一个库,所以首先需要安装no ...