All notable changes to this project will be documented in this file, in reverse chronological order by release.
3.3.x bugfix release (patch)
#10 adds support for the upcoming PHP 8.0 release.
zendframework/zend-eventmanager#72 adds support for PHP 7.3.
Additionally, it optimizes when the target and event arguments are injected into an event, eliminating that step entirely when either is unavailable.
^2.7.3 || ^3.0
, allowing either major version.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:
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.Laminas\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.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.FilterIterator::insert()
has been modified to raise an exception if the value provided is not a callable.Laminas\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 laminas-eventmanager, as it provides a consistent API for retrieving lists of events and listeners between the two versions.
Laminas\EventManager\SharedEventsCapableInterface
. This interface will
largely replace Laminas\EventManager\SharedEventManagerAwareInterface
in
version 3, and the latter was updated to extend it.EventManager::triggerEvent(EventInterface $event)
as a
forwards-compatibility feature.EventManager::triggerEventUntil(callable $callback, EventIterface $event)
as a forwards-compatibility feature.GlobalEventManager
as deprecated; this class will be removed in
version 3.StaticEventManager
as deprecated; this class will be removed in
version 3.SharedListenerAggregateInterface
as deprecated; this interface will
be removed in version 3.SharedEventAggregateAwareInterface
as deprecated; this interface will
be removed in version 3.SharedEventManagerAwareInterface
as deprecated; this interface will
be removed in version 3.EventManager::setSharedManager()
as deprecated; this method will be
removed in version 3.EventManager::unsetSharedManager()
as deprecated; this method will be
removed in version 3.EventManagerInterface::
and EventManager::getEvents()
as
deprecated; this method will be removed in version 3.EventManagerInterface::
and EventManager::getListeners()
as
deprecated; this method will be removed in version 3.EventManagerInterface::
and Eventmanager::setEventClass()
as
deprecated; this method is renamed to setEventPrototype(EventInterface $event)
in version 3.EventManagerInterface::
and EventManager::attachAggregate()
as
deprecated; this method will be removed in version 3.EventManagerInterface::
and EventManager::detachAggregate()
as
deprecated; this method will be removed in version 3.SharedEventManagerInterface::
and SharedEventManager::getEvents()
as deprecated; this method will be removed in version 3.$this
) from the test suite.FilterIterator
that occurs when attempting to extract from an empty heap.