PHPackages                             tinywan/event - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tinywan/event

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

tinywan/event
=============

the event for webman plugin

v0.0.1(4y ago)81.7k↑100%Apache-2.0PHPPHP &gt;=7.2

Since Apr 18Pushed 4y ago1 watchersCompare

[ Source](https://github.com/Tinywan/webman-event)[ Packagist](https://packagist.org/packages/tinywan/event)[ RSS](/packages/tinywan-event/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (2)Used By (0)

webman event plugin
===================

[](#webman-event-plugin)

[![Latest Stable Version](https://camo.githubusercontent.com/7bcfa821cdec971ccfb72925f663c05ce86000f3c35afe401e106db9b2603a1f/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f6576656e742f76)](https://packagist.org/packages/tinywan/event)[![Total Downloads](https://camo.githubusercontent.com/7bdc90e963ea8a100e99892add2090a95049c76ab6bdbefb421e21eee4a1e0ee/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f6576656e742f646f776e6c6f616473)](https://packagist.org/packages/tinywan/event)[![Latest Unstable Version](https://camo.githubusercontent.com/3839b0efe4d95e13aa808faf7238193e604d8ee8daf6f25a0c893435f8c1e022/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f6576656e742f762f756e737461626c65)](https://packagist.org/packages/tinywan/event)[![License](https://camo.githubusercontent.com/de8434e9de6fcff3b74c5b8aa7940d8391e53c3d3b96192afa1d7682ed55c505/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f6576656e742f6c6963656e7365)](https://packagist.org/packages/tinywan/event)[![PHP Version Require](https://camo.githubusercontent.com/54a2d29c68d9aea7d39c49753087d264c6855dd5369cebb603979bfff9a7dde7/687474703a2f2f706f7365722e707567782e6f72672f74696e7977616e2f6576656e742f726571756972652f706870)](https://packagist.org/packages/tinywan/event)

事件相比较中间件的优势是事件比中间件更加精准定位（或者说粒度更细），并且更适合一些业务场景的扩展。例如，我们通常会遇到用户注册或者登录后需要做一系列操作，通过事件系统可以做到不侵入原有代码完成登录的操作扩展，降低系统的耦合性的同时，也降低了BUG的可能性。

安装
--

[](#安装)

```
composer require tinywan/event
```

快速开始
----

[](#快速开始)

### 监听事件

[](#监听事件)

事件类 `LogErrorWriteEvent.php`

```
namespace extend;

use Symfony\Contracts\EventDispatcher\Event;

class LogErrorWriteEvent extends Event
{
    const NAME = 'log.error.write';  // 事件名，事件的唯一标识

    public $log;

    public function __construct(array $log)
    {
        $this->log = $log;
    }

    public function handle()
    {
        return $this->log;
    }
}
```

事件监听

```
return [
    // 事件监听
    'listener'    => [
        \extend\LogErrorWriteEvent::NAME => \extend\LogErrorWriteEvent::class,
        \extend\DingTalkEvent::NAME => \extend\DingTalkEvent::class,
    ],
];
```

### 事件订阅

[](#事件订阅)

订阅类 `LoggerSubscriber.php`

```
namespace extend;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Contracts\EventDispatcher\Event;

class LoggerSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        // 监听的不同事件，当事件触发时，会调用 onResponse 方法
        return [
            \extend\LogErrorWriteEvent::NAME => 'onResponse',
            \extend\DingTalkEvent::NAME => 'onResponse',
        ];
    }

    /**
     * @desc: 触发事件
     * @param Event $event
     */
    public function onResponse(Event $event)
    {
        // 一些具体的业务逻辑
        var_dump($event->handle());
    }
}
```

事件订阅

```
return [
    // 事件订阅
    'subscriber' => [
         \extend\LoggerSubscriber::class
    ],
];
```

### 事件触发器

[](#事件触发器)

触发 `LogErrorWriteEvent` 事件。

```
$error = [
    'errorMessage' => '错误消息',
    'errorCode' => 500
];
Tinywan\Event::trigger(new \extend\LogErrorWriteEvent($error), \extend\LogErrorWriteEvent::NAME);
```

### 助手函数（推荐）

[](#助手函数推荐)

```
$error = [
    'errorMessage' => '错误消息',
    'errorCode' => 500
];
event(new \extend\LogErrorWriteEvent($error), \extend\LogErrorWriteEvent::NAME);
```

执行结果

[![打印结果](./trigger.png)](./trigger.png)

License
-------

[](#license)

This project is licensed under the [Apache 2.0 license](LICENSE).

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1492d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b0042e0b68ff6a731ef382a03eecd211736c2d619acc55b2b326988085f72bfb?d=identicon)[Tinywan](/maintainers/Tinywan)

---

Top Contributors

[![Tinywan](https://avatars.githubusercontent.com/u/14959876?v=4)](https://github.com/Tinywan "Tinywan (17 commits)")

---

Tags

dispatchereventphpphp-librarysymfonywebmanworkermaneventpluginwebman

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/tinywan-event/health.svg)

```
[![Health](https://phpackages.com/badges/tinywan-event/health.svg)](https://phpackages.com/packages/tinywan-event)
```

###  Alternatives

[winzou/state-machine

A very lightweight yet powerful PHP state machine

52113.7M18](/packages/winzou-state-machine)[contributte/event-dispatcher

Best event dispatcher / event manager / event emitter for Nette Framework

292.4M19](/packages/contributte-event-dispatcher)[loveorigami/yii2-plugins-system

Plugins system as WP for Yii2

1143.0k1](/packages/loveorigami-yii2-plugins-system)[zumba/symbiosis

Symbiosis, event structure for bootstrapping plugins.

1360.4k1](/packages/zumba-symbiosis)[foolz/plugin

A plugin system for PHP, with cascading events.

542.1k1](/packages/foolz-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
