Hoa\Event 库。

v3.0.0 2022-12-17 12:14 UTC

This package is auto-updated.

Last update: 2024-09-17 16:14:47 UTC


README

Hoa

Build status Code coverage Packagist License

Hoa 是一套 模块化可扩展结构化 的 PHP 库。
此外,Hoa 希望成为工业界和学术界之间的桥梁。

Hoa\Event

Help on IRC Help on Gitter Documentation Board

此库允许在 PHP 中使用事件和监听器。这是一个观察者设计模式的实现。

了解更多.

安装

使用 Composer,要将此库包含到您的依赖项中,您需要要求 hoa/event

$ composer require hoa/event '~2.0'

有关更多信息,请参阅 源代码页面

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请参阅 贡献指南

快速使用

我们提供了一个关于如何使用事件和监听器的快速概述。

事件

一个事件是

  • 异步 当注册时,因为观察者可能尚未存在,而观察者开始观察时,
  • 匿名 当使用时,因为观察者不知道有多少和观察者正在观察什么,
  • 它的目标是通过隔离组件大量传播数据。无论观察者在何处,我们都可以观察其数据。

在 Hoa 中,事件通道具有以下形式: hoa://Event/LibraryName/AnId:pseudo-class#anAnchor。例如,hoa://Event/Exception 通道包含所有已抛出的异常。hoa://Event/Stream/StreamName:close-before 包含所有即将关闭的流。因此,以下示例将观察所有抛出的异常

Hoa\Event\Event::getEvent('hoa://Event/Exception')->attach(
    function (Hoa\Event\Bucket $bucket) {
        var_dump(
            $bucket->getSource(),
            $bucket->getData()
        );
    }
);

因为 attach 期望一个可调用对象,并且因为 Hoa 的可调用对象实现是智能的,我们可以直接将流附加到事件,如下所示

Hoa\Event\Event::getEvent('hoa://Event/Exception')->attach(
    new Hoa\File\Write('Foo.log')
);

这样,所有异常都将打印到 Foo.log 文件中。

监听器

与事件相反,监听器是

  • 同步 当注册时,因为观察者必须在观察者可以观察之前存在,
  • 已识别 当使用时,因为观察者知道有多少观察者在观察,
  • 它的目标是数据的小范围传播。观察者必须有权访问观察者才能观察。

Hoa\Event\Listenable 接口要求存在 on 方法以将监听器注册到监听器 ID。例如,以下示例监听 message 监听器 ID,即当 WebSocket 服务器收到消息时,闭包将被执行

$server = new Hoa\Websocket\Server(…);
$server->on('message', function (Hoa\Event\Bucket $bucket) {
    var_dump(
        $bucket->getSource(),
        $bucket->getData()
    );
});

文档

Hoa\Event 的黑客手册 包含有关如何使用此库及其如何工作的详细信息。

要本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目网站上找到: hoa-project.net

获取帮助

主要有两种方式可以获得帮助

贡献

你想贡献吗?谢谢!一个详细的 贡献指南 解释了你需要知道的一切。

许可证

花项目采用新BSD许可证(BSD-3-Clause)。请参阅LICENSE获取详细信息。