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();
} }

最新文章

  1. Linux下高cpu解决方案
  2. js操作新添加的DOM的问题
  3. 在已有 Xcode 项目中 加入Cordova框架
  4. C#基础入门一
  5. svn利用钩子实现代码同步到web目录
  6. BZOJ3172——[Tjoi2013]单词
  7. [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍
  8. Beginning Android 4 Programming Book学习
  9. DM9000C网卡驱动程序移植
  10. 【高精度】Vijos P1010 清帝之惑之乾隆
  11. 自动生成XML空节点格式的差异
  12. 菜鸟版JAVA设计模式—从买房子看代理模式
  13. shell之 printf 输出语句
  14. JS的forEach和map方法的区别
  15. Delphi下 Winsock 函数
  16. DelphiXE10.2.3——跨平台生成验证码图片
  17. Python遍历List集合四种方法
  18. 如何将revit模型背景设置为黑色
  19. Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream
  20. C# Winform添加全局快捷键(老板键)

热门文章

  1. API 工程化分享
  2. python工具---snmp流量监控,自定义粒度,业务突发可视化
  3. 『忘了再学』Shell基础 — 19、使用declare命令声明变量类型
  4. [2-SAT]编码
  5. ES6 - promise(2)
  6. 什么是Gerber文件?PCB电路板Gerber文件简介
  7. Arraylist集合、对象数组
  8. camunda流程引擎概念术语
  9. windiws下安装Composer
  10. Python中的类变量和成员变量