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自定义第三方扩展的更多相关文章
- laravel中的自定义函数的加载和第三方扩展库加载
l 1. 创建文件 app/Helpers/functions.php <?php // 示例函数 function foo() { return "foo"; } 2. 修 ...
- 让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
JAVA的时间日期处理一直是一个比较复杂的问题,大多数程序员都不能很轻松的来处理这些问题.首先Java中关于时间的类,从 JDK 1.1 开始,Date的作用很有限,相应的功能已由Calendar与D ...
- yii中第三方库
yii中存在一些路径别名:ext:表示包含了所有第三方扩展的目录 参考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.namespac ...
- 自定义和扩展 SharePoint 2010 Server 功能区
了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...
- (转)Bootstrap 之 Metronic 模板的学习之路 - (6)自定义和扩展
https://segmentfault.com/a/1190000006815041 前面我们将 Metronic 的结构和源码大致浏览了一遍,Metronic 整个文件包有三百多兆,在实际项目中, ...
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...
- 适用于 Windows 的自定义脚本扩展
自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...
- WeUI教程/第三方扩展及其他UI框架对比
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一.包含button.cell.dialog. progress. toa ...
- yii安装redis扩展(Windows)
yii安装redis扩展可以用不同的方式, 最简单便捷的是使用 composer 方式, 有的时候composer会出现一些问题(现在还弄不懂),可能是网络什么的原因吧~ 还可以使用手动安装的方式, ...
随机推荐
- Vue的Vuex的使用
一.Vuex是什么? 1:Vuex是一个专为vue.js应用程序开发的状态管理模式,核心就是一个store仓库,采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化 ...
- python工具--获取盛科交换机端口模块类型,波长,传输距离等信息
交换机端口模块信息对应的OID节点为各厂商私有节点,获取其他厂商信息需要把OID进行替换 1 #! /usr/bin/env python 2 #-*-coding:utf-8-*- 3 import ...
- 其实 Gradle Transform 就是个纸老虎 —— Gradle 系列(4)
前言 目前,使用 AGP Transform API 进行字节码插桩已经非常普遍了,例如 Booster.神策等框架中都有 Transform 的影子.Transform 听起来很高大上,其本质就是一 ...
- TornadoFx设置保存功能((config和preference使用))
原文地址:TornadoFx设置保存功能(config和preference使用) 相信大部分的桌面软件都是存在一个设置的界面,允许用户进行设置的修改,此修改之后需要保存的本地,若是让开发者自己实现, ...
- 牛客多校赛2K Keyboard Free
Description 给定 \(3\) 个同心圆,半径分别为 \(r1,r2,r3\) ,三个点分别随机分布在三个圆上,求这个三角形期望下的面积. Solution 首先可以固定 \(A\) 点,枚 ...
- python3在使用类基础时,遇到错误TypeError: module.**init**() takes at most 2 arguments (3 given)
python3在使用类基础时,遇到错误TypeError: module.init() takes at most 2 arguments (3 given) 1.原因:直接导入的py文件,而没有导入 ...
- 论文解读(LA-GNN)《Local Augmentation for Graph Neural Networks》
论文信息 论文标题:Local Augmentation for Graph Neural Networks论文作者:Songtao Liu, Hanze Dong, Lanqing Li, Ting ...
- Tensorboard SummaryWriter()
import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvi ...
- Ubuntu Linux处理Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3365 (unattended-upgr)问题
问题 在Ubuntu中,执行apt install后,出现以下问题: Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-fro ...
- 隐私计算FATE-模型训练
一.说明 本文分享基于 Fate 自带的测试样例,进行 纵向逻辑回归 算法的模型训练,并且通过 FATE Board 可视化查看结果. 本文的内容为基于 <隐私计算FATE-概念与单机部署指南& ...