马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
花了几个小时
里面最重要的三个概念:
1、定义事件
定义要执行的事件
定义一个事件的代码是:
[PHP] 纯文本查看 复制代码
Event::trigger('UserLogin');
助手函数
[PHP] 纯文本查看 复制代码
event('UserLogin');
两个效果一致
2、事件监听
一个监听文件 监听一个监听事件
使用
[PHP] 纯文本查看 复制代码
php think make:listener UserLogin
命令创建一个监听类 用来执行定义的监听方法,也可以手动在app\listener 下创建一个UserLogin.php 文件 内容如下:
[PHP] 纯文本查看 复制代码
<?php
declare (strict_types = 1);
namespace app\listener;
class UserLogin
{
/**
* 事件监听处理
*
* @return mixed
*/
public function handle($event)
{
echo "UserLogin headle <br />";
//
}
}
内容输出:
[PHP] 纯文本查看 复制代码
UserLogin headle
带参数的事件监听
[PHP] 纯文本查看 复制代码
Event::trigger('UserLogin', 'test');
监听类中:
[PHP] 纯文本查看 复制代码
public function handle($event)
{
echo "UserLogin headle <br />";
dump($event);
}
第一个参数 event 就是定义时传的参数
event.php 中:
[PHP] 纯文本查看 复制代码
<?php
// 事件定义文件
return [
'bind' => [
],
'listen' => [
'AppInit' => [],
'HttpRun' => [],
'HttpEnd' => [],
'LogLevel' => [],
'LogWrite' => [],
'OrderCreate' => [],
'UserLogin' => [app\listener\UserLogin::class] // 定义处理的类
],
'subscribe' => [
],
];
结果:
3、事件订阅
一个订阅文件,可以监听多个事件
先创建一个订阅文件:
不需要创建定义文件和事件类
通过命令或者直接创建 app\subscribe\User.php :
[PHP] 纯文本查看 复制代码
<?php
declare (strict_types = 1);
namespace app\subscribe;
class User{
}
通过命令创建:
[PHP] 纯文本查看 复制代码
php think make:subscribe User
User.php 内容:
[PHP] 纯文本查看 复制代码
<?php
declare (strict_types = 1);
namespace app\subscribe;
class User
{
public function onUserLogin()
{
echo 'UserLogin';
}
}
在event.php 中代码:
[PHP] 纯文本查看 复制代码
<?php
// 事件定义文件
return [
'bind' => [
],
'listen' => [
'AppInit' => [],
'HttpRun' => [],
'HttpEnd' => [],
'LogLevel' => [],
'LogWrite' => [],
'OrderCreate' => [],
'UserLogin' => []
],
'subscribe' => [
app\subscribe\User::class
],
];
这时 listen中的UserLogin 就不用写命名空间了
在说明时间后
[PHP] 纯文本查看 复制代码
app\subscribe\User
下的 onUserLogin 就会执行
使用on + 标识 访问,
统一时间前缀
|