atelierspierrot/event-manager

此软件包已被 废弃 并不再维护。没有建议的替代软件包。

Les Ateliers Pierrot 的事件管理器软件包。

v1.0.1 2016-01-01 23:25 UTC

This package is not auto-updated.

Last update: 2024-03-02 13:08:27 UTC


README

Code Climate documentation Les Ateliers Pierrot 的事件管理器软件包

安装

有关如何安装此软件包及其命名空间的完整信息,请参阅我们的 USAGE 文档

如果您是 Composer 用户,只需将软件包添加到项目 composer.json 清单文件的要求中

"atelierspierrot/event-manager": "dev-master"

您可以使用特定版本或主要版本的最新版本,使用适当的 版本约束

请注意,此软件包依赖于外部软件 PHP PatternsPHP Library

SPL 接口

提醒一下,SPL 观察者对象

interface SplObserver {
    abstract public void update ( SplSubject $subject )
}

interface SplSubject {
    abstract public void attach ( SplObserver $observer )
    abstract public void detach ( SplObserver $observer )
    abstract public void notify ( void )
}

基础知识

PHP 中事件传播系统的基本思想相当简单

  • 对象 A 在其生命周期中可以触发一些事件(例如,通知更新);
  • 对象 B 可以在对象 A 触发事件时调整其属性或行为(例如,保留 A 的属性的最后值)。

这可以通过一个 观察者/可观察 系统来实现,其中上面的例子中的对象 A可观察的,而 B 是其 观察者。基本上,可观察的 可以被视为上述 SPL 接口中定义的 SplSubject,而 观察者 可以被视为 SplObserver。但是,标准系统(SPL 接口)只允许触发一个单独的事件(或由观察者的相同方法处理的多个事件)。我们可以使用事件触发的这些基本定义,但它强制实现者对可观察的可以触发不同事件的情况进行 switch...

库中的实现已准备好处理多个事件触发,允许观察者定义在事件被触发时应调用的方法。此方法默认为 handleEvent()。为此,将 SplObserver 接口重命名(并重写)为 ObserverInterface,将 SplSubject 重命名为 ObservableInterface。事件是一个独立的对象,实现了 EventInterface

interface ObserverInterface {
    abstract public void handleEvent ( EventInterface $event )
}

interface ObservableInterface {
    abstract public void attachObserver ( ObserverInterface $observer | array($object , $method) | $callback )
    abstract public void detachObserver ( ObserverInterface $observer | array($object , $method) | $callback )
    abstract public void triggerEvent ( $event_name )
}

interface EventInterface {
    abstract public ObservableInterface getSubject ()
    abstract public string getName ()
    abstract public void stopPropagation ()
    abstract public bool isPropagationStopped ()
}

事件管理器

定义了一个内核对象来处理全局应用程序的事件监听器/观察者集合:EventManager 对象。它引入了两个新概念:监听器订阅者

基本上,一个监听器就像一个观察者,它将自己与触发它要观察的事件的对象相关联,而订阅者并不会将自身与它想要监听的所有事件相关联,而是与全局事件管理器相关联,该管理器会询问它可以监听的事件列表。

interface EventListenerInterface 
    extends ObserverInterface {}

interface EventSubscriberInterface {
    abstract public array getSubscribedEvents ()
}

作者 & 许可证

事件管理器

http://github.com/atelierspierrot/event-manager

版权所有 (c) 2015-2016 Pierre Cassat 及贡献者

根据Apache 2许可证授权。

https://apache.ac.cn/licenses/LICENSE-2.0

Les Ateliers Pierrot - 法国巴黎

http://www.ateliers-pierrot.fr/ - contact@ateliers-pierrot.fr