文档章节

yii2学习——事件(event)

卖小女孩的小火柴
 卖小女孩的小火柴
发布于 2015/05/05 22:10
字数 193
阅读 4966
收藏 8

最近在学习Yii2,这里记录一下学习yii2的事件,一个简单的事件实例:

包括了一个对象、一个静态对象、一个匿名函数。

app\controllers\siteController

/**
     * 事件处理
     */
    public function actionEvent(){
        echo '这是事件处理<br/>';
        
        $person = new Person();
        
        $this->on('SayHello', [$person,'say_hello'],'你好,朋友');
        
        $this->on('SayGoodBye', ['app\models\Person','say_goodbye'],'再见了,我的朋友');
        
        $this->on('GoodNight', function(){
            echo '晚安!';
        });
        
        
        $this->trigger('SayHello');
        $this->trigger('SayGoodBye');
        $this->trigger('GoodNight');
        
    }


app\models\Person.php

<?php

namespace app\models;

use yii\base\Model;

class Person extends Model{
    public function say_hello($parm){
        echo "你应该会看到:".$parm->data.'<br>';
    }
    
    public function say_goodbye($parm){
        echo "你应该会看到:".$parm->data.'<br>';
    }
}


最后输出结果为:

这是事件处理
你应该会看到:你好,朋友
你应该会看到:再见了,我的朋友
晚安!


© 著作权归作者所有

卖小女孩的小火柴
粉丝 46
博文 68
码字总数 28535
作品 1
成都
项目经理
私信 提问
加载中

评论(5)

Z
ZoharMenethil

引用来自“ahkxhyl”的评论

还有

$this->on('SayGoodBye', ['app\models\Person','say_goodbye'],'再见了,我的朋友');
app\models\Person 为何不换成$person
// 处理器是对象方法 $foo->on(Foo::EVENT_HELLO, [$object, 'methodName']); // 处理器是静态类方法 $foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']);
ahkxhyl
ahkxhyl
还有

$this->on('SayGoodBye', ['app\models\Person','say_goodbye'],'再见了,我的朋友');
app\models\Person 为何不换成$person
ahkxhyl
ahkxhyl
运行报错;public static function say_goodbye($parm) 加个static
卖小女孩的小火柴
卖小女孩的小火柴 博主

引用来自“Desolate”的评论

如果能说下beforelogin事件的用法就好了
事件原理大概都是这样的,这里有两个思路: 1、(山寨法,仅供思路)在你的登录login之前(比如app\controllers\UserController.actionLogin())进行事件操作 2、(Yii2封装好的方法,推荐使用),Yii2对用户的操作做了非常多的封装处理,基本上的我们对用户的操作使用这些处理就足够了。Yii2 具有beforeLogin,afterLogin等封装方法,使用:beforeLogin( $identity, $cookieBased, $duration ) 具体使用暂时可以看Yii2的API:http://www.yiiframework.com/doc-2.0/yii-web-user.html#beforeLogin()-detail
Outshine
Outshine
如果能说下beforelogin事件的用法就好了
yii2 - Behavior 实例及源码分析

Behavior 的简述 行为简单来说是组件的扩展,可以对组件的属性,方法,事件 (yii2组件的三大要点)进行扩展而无需改动组件现有的代码逻辑。即此行为所拥有的属性,方法,事件,都会被绑定它...

big_cat
2016/06/01
1K
0
yii2 - Event 实例及源码分析

yii2 可以方便的使用 Event 组件基类 来实现 注册事件和监听触发 机制,每个事件都有自身的事件队列 首先要知道,yii2的事件一共有三类:对象级,类级,全局 Yii::$app 级 对象和 全局是通过...

big_cat
2016/05/27
280
0
这些最热门的 PHP 框架,哪一款是你的菜?

原文出处:opensource 译文出处:开源中国—两味真火 PHP 是世界上最流行的编程语言之一,广泛用于主要的项目中。例如,Facebook 就是利用 PHP 来创建和维护他们的内部系统;WordPress 内部基...

opensource
2016/12/27
0
0
Yii入门指导(二):Yii内功修炼

项目名称从“FantaCMS”修改成为“testyii”—————— 俗! 1,项目目录结构分析 2,Yii入口文件分析 在Yii启动项目时,传递了项目主配置文件数组,那么Yii会在整个应用中绑定一个全局的Y...

Koma
2014/10/21
1K
1
Yii2 源码分析 - 入口文件执行流程

以 yii 2.0.14 高级版的 frontend 为例,从 frontend/web/index.php 开始 入口文件看着就这么几行,简单的很,那他是怎么通过这几行来运行应用的呢?先看 Yii.php 内的逻辑 接下来,就是重头...

botkenni
2018/05/03
36
0

没有更多内容

加载失败,请刷新页面

加载更多

75、GridFS

GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用Mongo DB存储数据,使用FGridFS可以快速集成开发。 工作原理: 在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个...

lianbang_W
46分钟前
4
0
js bind 绑定this指向

本文转载于:专业的前端网站➱js bind 绑定this指向 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>bind函数绑定this指向......

前端老手
49分钟前
4
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
56分钟前
4
0
深入vue-公司分享ppt

组件注册 全局注册 注册组件,传入一个扩展过的构造器 Vue.component('my-component', Vue.extend({/*...*/})) 注册组件,传入一个选项对象(自动调用Vue.extend) Vue.component('my-comp...

莫西摩西
57分钟前
4
0
gitlab重置管理员密码

登录gitlab服务器 [root@localhost bin]# sudo gitlab-rails console productionLoading production environment (Rails 5.2.3)irb(main):001:0> u = User.where(email: 'admin@example.co......

King华仔o0
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部