hoa/event
最新稳定版本:2.17.08.30
Composer 安装命令:
composer require hoa/event
包简介
The Hoa\Event library.
README 文档
README
Hoa is a modular, extensible and
structured set of PHP libraries.
Moreover, Hoa aims at being a bridge between industrial and research worlds.
Hoa\Event
This library allows to use events and listeners in PHP. This is an observer design-pattern implementation.
Installation
With Composer, to include this library into
your dependencies, you need to
require hoa/event:
$ composer require hoa/event '~2.0'
For more installation procedures, please read the Source page.
Testing
Before running the test suites, the development dependencies must be installed:
$ composer install
Then, to run all the test suites:
$ vendor/bin/hoa test:run
For more information, please read the contributor guide.
Quick usage
We propose a quick overview of how to use events and listeners.
Events
An event is:
- Asynchronous when registering, because the observable may not exist yet while observers start to observe,
- Anonymous when using, because the observable has no idea how many and what observers are observing,
- It aims at a large diffusion of data through isolated components. Wherever is the observable, we can observe its data.
In Hoa, an event channel has the following form:
hoa://Event/LibraryName/AnId:pseudo-class#anAnchor. For instance, the
hoa://Event/Exception channel contains all exceptions that have been thrown.
The hoa://Event/Stream/StreamName:close-before contains all streams that are
about to close. Thus, the following example will observe all thrown exceptions:
Hoa\Event\Event::getEvent('hoa://Event/Exception')->attach( function (Hoa\Event\Bucket $bucket) { var_dump( $bucket->getSource(), $bucket->getData() ); } );
Because attach expects a callable and because Hoa's callable implementation is
smart, we can directly attach a stream to an event, like:
Hoa\Event\Event::getEvent('hoa://Event/Exception')->attach( new Hoa\File\Write('Foo.log') );
This way, all exceptions will be printed on the Foo.log file.
Listeners
Contrary to an event, a listener is:
- Synchronous when registering, because the observable must exist before observers can observe,
- Identified when using, because the observable knows how many observers are observing,
- It aims at a close diffusion of data. The observers must have an access to the observable to observe.
The Hoa\Event\Listenable interface requires the on method to be present to
register a listener to a listener ID. For instance, the following example
listens the message listener ID, i.e. when a message is received by the
WebSocket server, the closure is executed:
$server = new Hoa\Websocket\Server(…); $server->on('message', function (Hoa\Event\Bucket $bucket) { var_dump( $bucket->getSource(), $bucket->getData() ); });
Documentation
The
hack book of Hoa\Event contains
detailed information about how to use this library and how it works.
To generate the documentation locally, execute the following commands:
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
More documentation can be found on the project's website: hoa-project.net.
Getting help
There are mainly two ways to get help:
- On the
#hoaprojectIRC channel, - On the forum at users.hoa-project.net.
Contribution
Do you want to contribute? Thanks! A detailed contributor guide explains everything you need to know.
License
Hoa is under the New BSD License (BSD-3-Clause). Please, see
LICENSE for details.
hoa/event 适用场景与选型建议
hoa/event 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22.23M 次下载、GitHub Stars 达 323, 最近一次更新时间为 2026 年 01 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「event」 「library」 「listener」 「observer」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 hoa/event 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hoa/event 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 hoa/event 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Timestamp parameter in public file uri
The Listener component of the RabbitEvents library.
Event dispatcher package
Symfony bundle for broadway/broadway.
Inbox pattern process implementation for your Laravel Applications
Listener to change layout for different module
统计信息
- 总下载量: 22.23M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 323
- 点击次数: 24
- 依赖项目数: 19
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2026-01-04