简单的 PHP 事件库

1.0.0 2024-07-15 18:22 UTC

This package is auto-updated.

Last update: 2024-09-25 14:45:25 UTC


README

简单事件库

Status Status Status

贡献

  • 这是一个开源库,欢迎贡献力量。
  • 如果您有任何建议、错误报告或功能请求,请在此项目的仓库中打开问题或提交拉取请求。

要求

  • 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