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. 解决mysq服务无法正常启动问题

    在mysql的启动过程中,遇到什么问题都可以反馈给我,我都会尽力帮你们解决 第一种:通过net start mysql启动MySQL服务器时,出现以下信息 是因为在MySQL5.7以上的版本中默认的没 ...

  2. 零基础学Java第一节(语法格式、数据类型)

    本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...

  3. 渗透:wesside-ng

    WEP自动破解工具wesside-ng wesside-ng是aircrack-ng套件提供的一个概念验证工具.该工具可以自动扫描无线网络,发现WEP加密的AP.然后,尝试关联该AP.关联成功后,它会 ...

  4. Nginx基本配置与应用

    一.准备 1.1 环境准备 CentOS7软件环境 1.2 tomcat多实例 把/etc/profile.d/tomcat.sh中的变量注释了 #export TOMCAT_HOME=/usr/lo ...

  5. 图解Dijkstra(迪杰斯特拉)算法+代码实现

    简介 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很有代表性的 ...

  6. 使用docker创建和运行跨平台的容器化的mssql数据库

    我们一般启用sql server数据库要么选择安装SQL Server实例和管理工具(SSMS),要么用vs自带的数据库.如今net跨平台成为趋势,今天给大家介绍另一种我最近在玩的方式,即使用dock ...

  7. 记一次IIS网站启动不了的问题排查

    今天清理了下机器中的IIS网站,将很久不用的网站都删除. 因为需要删除的比较多,正在使用的很少,就将网站全部删除了,然后准备重新添加需要用的. 在添加了网站后,点击启动按钮,发现网站启动不了,因为网站 ...

  8. 图解 Apache SkyWalking UI 的使用

    Apache SkyWalking的UI界面主要分为以下几个区域: 功能选择区:这里列出了主要的UI功能,包括仪表盘.拓扑图.追踪.性能刨析.告警等功能 重新加载区:控制重新加载机制,包括定期重新加载 ...

  9. 6大优势、2种类型,一文吃透动态应用安全测试(DAST)

    在在上篇文章中中,我们了解了 SAST 的概念.优劣和使用的工具,并在文章里提到了另一个软件安全领域里的重要技术 DAST.本文将会详细介绍 DAST 的概念.重要性及其工作原理.   DAST(Dy ...

  10. ACL权限控制

    ALC讲述比较详细 https://zhuanlan.zhihu.com/p/360158311