naingaunglwin-dev / event
简单的 PHP 事件库
1.0.0
2024-07-15 18:22 UTC
Requires
- php: >=8.2
Requires (Dev)
- phpunit/phpunit: ^11.2
This package is auto-updated.
Last update: 2024-09-25 14:45:25 UTC
README
简单事件库
贡献
- 这是一个开源库,欢迎贡献力量。
- 如果您有任何建议、错误报告或功能请求,请在此项目的仓库中打开问题或提交拉取请求。
要求
- PHP 版本 8.2 或更高版本是必需的
安装 & 设置
- 您可以使用 composer 下载。
- 如果您还没有 composer,请先安装 composer。
- 在项目根目录创建文件
composer.json
。 - 将以下内容添加到
composer.json
{ "require": { "naingaunglwin-dev/event": "^1.0" } }
- 从项目的根目录在终端中运行以下命令
composer install
如果您在项目中已经有 composer.json
文件,只需在终端中运行此命令,
composer require naingaunglwin-dev/event
使用
<?php require_once "vendor/autoload.php"; use NAL\Event\Event; $event = new Event(); // Define the event $event->on("message", function () { echo "Message Sent!"; }); // emit the event $event->emit("message"); // Message Sent!
- 使用参数定义事件监听器
// Define the event with arguments $event->on("message", function ($at) { echo "Sent message at $at"; }); // emit the event with arguments $event->emit("message", date('Y-m-d H:i:s'));
- 使用类参数定义事件监听器
$event->on("message", function (User $user) { echo $user->notify("message is sent"); }); $event->emit("message"); // You don't have to pass the argument if arguments are classes
- 使用优先级定义事件监听器
$event->on("message", function () { echo "Message Sent!"; }, 1); $event->on("message", function () { $notify->user(); }, 2); $event->emit("message"); // The higher priority listeners (lower numerical values) will be executed first.
- 仅定义一次事件监听器
$event->once("message", function () { echo "Message is sent"; }); $event->emit("message"); // "Message is sent" $event->emit("message"); // "" (Empty string)
- 获取事件监听器
// Get all listeners for a specific event $listeners = $event->getListeners("message"); // Get all listeners for all events $allListeners = $event->getListeners();
- 移除特定监听器
$listener = function () { echo "This message will be removed."; }; // Add the listener $event->on("message", $listener); // Remove the specific listener $event->removeListener("message", $listener); // Try emitting the event $event->emit("message"); // No output since the listener has been removed
- 移除特定事件的全部监听器
// Add multiple listeners to the event $event->on("message", function () { echo "First listener"; }); $event->on("message", function () { echo "Second listener"; }); // Remove all listeners for the event $event->removeListeners("message"); // Try emitting the event $event->emit("message"); // No output since all listeners have been removed
- 移除所有事件的全部监听器
// Add listeners to different events $event->on("message", function () { echo "Message listener"; }); $event->on("notification", function () { echo "Notification listener"; }); // Remove all listeners for all events $event->removeListeners(); // Try emitting the events $event->emit("message"); // No output since all listeners have been removed $event->emit("notification"); // No output since all listeners have been removed