hoa/event

此包已被废弃,不再维护。未建议替代包。

Hoa\Event 库。

2.17.08.30 2017-08-30 12:19 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](https://hoa-project.net/).

获取帮助

获取帮助主要有两种方式:

贡献

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

许可证

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