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. 398. Random Pick Index - LeetCode

    Question 398. Random Pick Index Solution 思路:重点是如果数据中有多个数target相等,要从这些数中随机取一个,根据例题 假设输入是: int[] nums ...

  2. unity---监听物体被点击

    脚本 public void OnPointerClick(PointerEventData eventData) { Debug.LogFormat("{0} is Click" ...

  3. 推荐一款新框架PyScript:在 HTML 嵌入 Python 代码!

    一.介绍 网页浏览器是目前世界上最普遍,最可携的计算机环境.几乎所有人都可以在计算机或是手机上使用网页浏览器,以没有基础设施障碍的方式访问程序. 在 PyCon US 2022 上,知名 Python ...

  4. There appears to be trouble with your network connection. Retrying…

    yarn 错误There appears to be trouble with your network connection. Retrying- 原因:yarn超时 解决途径: #查看代理 yar ...

  5. 基于C++11的数据库连接池实现

    0.注意 该篇文章为了让大家尽快看到效果,代码放置比较靠前,看代码前务必看下第4部分的基础知识. 1.数据库连接池 1.1 是什么? 数据库连接池负责分配.管理和释放数据库连接,属于池化机制的一种,类 ...

  6. salesforce零基础学习(一百一十五)记一个有趣的bug

    本篇参考:https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000319486 page layou ...

  7. SQL中的数字、字母和汉字

    知识点001 当变量的数据类型为VARCHAR时,变量赋值后,变量中的字符所占字节数,数字和字母是1个bytes,汉字是2个bytes; 当变量的数据类型为NVARCHAR时,变量赋值后,变量中的字符 ...

  8. dotnet core 也能协调分布式事务啦!

    2022 年 5 月 24 日,我们发布了 DBPack v0.1.0 版本,该版本主要 release 了分布式事务功能.在我们的规划里,DBPack 是要支持所有微服务开发语言协调分布式事务的,但 ...

  9. Camunda如何适配国产数据库达梦

    前言 camunda流程引擎官方支持的数据库有:MySQL .MariaDB .Oracle .DB2 .PostgreSQL .SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数 ...

  10. 2.2.1 用户态、内核态的形成 -《zobolの操作系统学习札记》

    内核态的出现,让计算机系统的权力向操作系统高度集中了. 操作系统分出内核态和用户态,就是为了进行不同等级的权限管理, 从而更好的适应多用户多任务并发的工作环境. 用户态和内核态的来源 在早期的单进程单 ...