# Changelog All notable changes to this project will be documented in this file, in reverse chronological order by release. ## 3.2.1 - 2018-04-25 ### Added - [#66](https://github.com/zendframework/zend-eventmanager/pull/66) adds support for PHP 7.2. ### Changed - Nothing. ### Deprecated - Nothing. ### Removed - Nothing. ### Fixed - Nothing. ## 3.2.0 - 2017-07-11 ### Added - Nothing. ### Deprecated - Nothing. ### Removed - [#47](https://github.com/zendframework/zend-eventmanager/pull/47) removes support for PHP 5.5 and HHVM. ### Fixed - Nothing. ## 3.1.0 - 2016-12-19 ### Added - [#26](https://github.com/zendframework/zend-eventmanager/pull/26) publishes the documentation to https://zendframework.github.io/zend-eventmanager/ ### Changes - [#17](https://github.com/zendframework/zend-eventmanager/pull/17) makes a number of internal changes to how listeners are stored in order to improve performance, by as much as 10% in the scenario used in the MVC layer. Additionally, it optimizes when the target and event arguments are injected into an event, eliminating that step entirely when either is unavailable. ### Deprecated - Nothing. ### Removed - Nothing. ### Fixed - Nothing. ## 3.0.1 - 2016-02-18 ### Added - Nothing. ### Deprecated - Nothing. ### Removed - Nothing. ### Fixed - [#24](https://github.com/zendframework/zend-eventmanager/pull/24) updates the zend-stdlib dependency to `^2.7.3 || ^3.0`, allowing either major version. ## 3.0.0 - 2016-01-12 ### Added - [Migration documentation](doc/book/migration/) was added. - [Automated benchmarks](benchmarks/) were added. - `EventManager::__construct()` now accepts an optional `SharedEventManagerInterface` instance as the first argument, and an optional array of identifiers as the second. As identifiers have no meaning without a shared manager present, they are secondary to providing the shared manager. - `EventManagerInterface::trigger()` changes its signature to `trigger($eventName, $target = null, $argv = [])`; each argument has exactly one possible meaning; the `$eventName` can only be a string event name. The fourth `$callback` argument is removed. - `EventManagerInterface::triggerUntil()` changes its signature to `triggerUntil(callable $callback, $eventName, $target = null, $argv = null)`. Each argument has exactly one meaning. - `EventManagerInterface` adds two new methods for triggering provided `EventInterface` arguments: `triggerEvent(EventInterface $event)` and `triggerEventUntil(callable $callback, EventInterface $event)`. - `EventManagerInterface::attach()` and `detach()` change their signatures to `attach($eventName, callable $listener, $priority = 1)` and `detach(callable $listener, $eventName = null)`, respectively. Note that `$eventName` can now only be a string event name, not an array or `Traversable`. - `EventManagerInterface::setIdentifiers()` and `addIdentifiers()` change their signatures to each only accept an *array* of identifiers. - `SharedEventManagerInterface::getListeners()` changes signature to `getListeners(array $identifiers, $eventName)` and now guarantees return of an array. Note that the second argument is now *required*. - `SharedEventManagerInterface::attach()` changes signature to `attach($identifier, $eventName, callable $listener, $priority = 1)`. The `$identifier` and `$eventName` **must** be strings. - `SharedEventManagerInterface::detach()` changes signature to `detach(callable $listener, $identifier = null, $eventName = null)`; `$identifier` and `$eventName` **must** be strings if passed. - `ListenerAggregateInterface::attach()` adds an optional `$priority = 1` argument. This was used already in v2, but not dictated by the interface. - `FilterInterface::attach()` and `detach()` have changed signature to `attach(callable $callback)` and `detach(callable $ilter)`, respectively. - `LazyListener` allows wrapping: - fetching a listener service from a container-interop container, and - invoking a designated listener method with the provided event. - `LazyEventListener` extends `LazyListener`, and provides metadata for discovering the intended event name and priority at which to attach the lazy listener; these are consumed by: - `LazyListenerAggregate`, which, provided a list of `LazyEventListeners` and/or definitions to use to create them, acts as an aggregate for attaching a number of such listeners at once. - [#20](https://github.com/zendframework/zend-eventmanager/pull/20) updates the trait `Zend\EventManager\Test\EventListenerIntrospectionTrait` so that the implementation will work with the v3 changes; the tests written for v2 continue to pass, allowing this trait to be used to provide compatibility testing between v2 and v3. ### Deprecated - Nothing. ### Removed - `GlobalEventManager` and `StaticEventManager` are removed (with prejudice!). - `ProvidesEvents`, which was previously deprecated, is removed. - `EventManagerInterface::setSharedManager()` is removed. Shared managers are now expected to be injected during instantiation. - `EventManagerInterface::getEvents()` and `getListeners()` are removed; they had now purpose within the implementation. - `EventManagerInterface::setEventClass()` was renamed to `setEventPrototype()`, which now expects an `EventInterface` instance. That instance will be cloned whenever a new event is created. - `EventManagerInterface::attachAggregate()` and `detachAggregate()` are removed. Users should use the `attach()` and `detach()` methods of the aggregates themselves. - `SharedEventAggregateAwareInterface` and `SharedListenerAggregateInterface` are removed. This was an undocumented and largely unused feature. - `SharedEventManagerAwareInterface` is removed. A new interface, `SharedEventsCapableInterface` defines the `getSharedManager()` method from the interface, and `EventManagerInterface` extends that new interface. - `SharedEventManagerInterface::getEvents()` is removed, as it had no purpose in the implementation. - `ResponseCollection::setStopped()` no longer implements a fluent interface. ### Fixed - `FilterIterator::insert()` has been modified to raise an exception if the value provided is not a callable. ## 2.6.2 - 2016-01-12 ### Added - [#19](https://github.com/zendframework/zend-eventmanager/pull/19) adds a new trait, `Zend\EventManager\Test\EventListenerIntrospectionTrait`, intended for composition in unit tests. It provides a number of methods that can be used to retrieve listeners with or without associated priority, and the assertion `assertListenerAtPriority(callable $listener, $priority, $event, EventManager $events, $message = '')`, which can be used for testing that a listener was registered at the specified priority with the specified event. The features in this patch are intended to facilitate testing against both version 2 and version 3 of zend-eventmanager, as it provides a consistent API for retrieving lists of events and listeners between the two versions. ### Deprecated - Nothing. ### Removed - Nothing. ### Fixed - Nothing. ## 2.6.0 - 2015-09-29 ### Added - Added `Zend\EventManager\SharedEventsCapableInterface`. This interface will largely replace `Zend\EventManager\SharedEventManagerAwareInterface` in version 3, and the latter was updated to extend it. - Added `EventManager::triggerEvent(EventInterface $event)` as a forwards-compatibility feature. - Add `EventManager::triggerEventUntil(callable $callback, EventIterface $event)` as a forwards-compatibility feature. - Adds [Athletic](https://github.com/polyfractal/athletic) benchmarks to aid in gauging performanc impact of changes; these are a development change only. ### Deprecated - Marked `GlobalEventManager` as deprecated; this class will be removed in version 3. - Marked `StaticEventManager` as deprecated; this class will be removed in version 3. - Marked `SharedListenerAggregateInterface` as deprecated; this interface will be removed in version 3. - Marked `SharedEventAggregateAwareInterface` as deprecated; this interface will be removed in version 3. - Marked `SharedEventManagerAwareInterface` as deprecated; this interface will be removed in version 3. - Marked `EventManager::setSharedManager()` as deprecated; this method will be removed in version 3. - Marked `EventManager::unsetSharedManager()` as deprecated; this method will be removed in version 3. - Marked `EventManagerInterface::` and `EventManager::getEvents()` as deprecated; this method will be removed in version 3. - Marked `EventManagerInterface::` and `EventManager::getListeners()` as deprecated; this method will be removed in version 3. - Marked `EventManagerInterface::` and `Eventmanager::setEventClass()` as deprecated; this method is renamed to `setEventPrototype(EventInterface $event)` in version 3. - Marked `EventManagerInterface::` and `EventManager::attachAggregate()` as deprecated; this method will be removed in version 3. - Marked `EventManagerInterface::` and `EventManager::detachAggregate()` as deprecated; this method will be removed in version 3. - Marked `SharedEventManagerInterface::` and `SharedEventManager::getEvents()` as deprecated; this method will be removed in version 3. ### Removed - Nothing. ### Fixed - Nothing. ## 2.5.2 - 2015-07-16 ### Added - [#5](https://github.com/zendframework/zend-eventmanager/pull/5) adds a number of unit tests to improve test coverage, and thus maintainability and stability. ### Deprecated - Nothing. ### Removed - [#3](https://github.com/zendframework/zend-eventmanager/pull/3) removes some PHP 5.3- and 5.4-isms (such as marking Traits as requiring 5.4, and closing over a copy of `$this`) from the test suite. ### Fixed - [#5](https://github.com/zendframework/zend-eventmanager/pull/5) fixes a bug in `FilterIterator` that occurs when attempting to extract from an empty heap.