\Cake\EventEventManager

The event manager is responsible for keeping track of event listeners, passing the correct data to them, and firing them in the correct order, when associated events are triggered. You can create multiple instances of this object to manage local events or keep a single instance and pass it around to manage all events in your app.

Summary

Methods
Properties
Constants
instance()
attach()
on()
detach()
off()
dispatch()
listeners()
prioritisedListeners()
matchingListeners()
getEventList()
addEventToList()
trackEvents()
isTrackingEvents()
setEventList()
unsetEventList()
__debugInfo()
$defaultPriority
No constants found
_attachSubscriber()
_extractCallable()
_detachSubscriber()
_callListener()
$_generalManager
$_listeners
$_isGlobal
$_eventList
$_trackEvents
N/A
No private methods found
No private properties found
N/A

Properties

$defaultPriority

$defaultPriority : integer

The default priority queue value for new, attached listeners

Type

integer

$_generalManager

$_generalManager : \Cake\Event\EventManager

The globally available instance, used for dispatching events attached from any scope

Type

\Cake\Event\EventManager

$_listeners

$_listeners : array

List of listener callbacks associated to

Type

array

$_isGlobal

$_isGlobal : boolean

Internal flag to distinguish a common manager from the singleton

Type

boolean

$_eventList

$_eventList : \Cake\Event\EventList|null

The event list object.

Type

\Cake\Event\EventList|null

$_trackEvents

$_trackEvents : boolean

Enables automatic adding of events to the event list object if it is present.

Type

boolean

Methods

instance()

instance(\Cake\Event\EventManager|null  $manager = null) : static

Returns the globally available instance of a Cake\Event\EventManager this is used for dispatching events attached from outside the scope other managers were created. Usually for creating hook systems or inter-class communication

If called with the first parameter, it will be set as the globally available instance

Parameters

\Cake\Event\EventManager|null $manager

Event manager instance.

Returns

static —

The global event manager

attach()

attach(callable|\Cake\Event\EventListenerInterface  $callable, string|null  $eventKey = null, array  $options = array()) : void

Adds a new listener to an event.

Parameters

callable|\Cake\Event\EventListenerInterface $callable

PHP valid callback type or instance of Cake\Event\EventListenerInterface to be called when the event named with $eventKey is triggered. If a Cake\Event\EventListenerInterface instance is passed, then the implementedEvents method will be called on the object to register the declared events individually as methods to be managed by this class. It is possible to define multiple event handlers per event name.

string|null $eventKey

The event unique identifier name with which the callback will be associated. If $callable is an instance of Cake\Event\EventListenerInterface this argument will be ignored

array $options

used to set the priority flag to the listener. In the future more options may be added. Priorities are treated as queues. Lower values are called before higher ones, and multiple attachments added to the same priority queue will be treated in the order of insertion.

Throws

\InvalidArgumentException

When event key is missing or callable is not an instance of Cake\Event\EventListenerInterface.

on()

on(string|\Cake\Event\EventListenerInterface|null  $eventKey = null, array|callable  $options = array(), callable|null  $callable = null) : $this

Adds a new listener to an event.

A variadic interface to add listeners that emulates jQuery.on().

Binding an EventListenerInterface:

$eventManager->on($listener);

Binding with no options:

$eventManager->on('Model.beforeSave', $callable);

Binding with options:

$eventManager->on('Model.beforeSave', ['priority' => 90], $callable);

Parameters

string|\Cake\Event\EventListenerInterface|null $eventKey

The event unique identifier name with which the callback will be associated. If $eventKey is an instance of Cake\Event\EventListenerInterface its events will be bound using the implementedEvents methods.

array|callable $options

Either an array of options or the callable you wish to bind to $eventKey. If an array of options, the priority key can be used to define the order. Priorities are treated as queues. Lower values are called before higher ones, and multiple attachments added to the same priority queue will be treated in the order of insertion.

callable|null $callable

The callable function you want invoked.

Returns

$this

detach()

detach(callable|\Cake\Event\EventListenerInterface  $callable, string|null  $eventKey = null) : void

Removes a listener from the active listeners.

Parameters

callable|\Cake\Event\EventListenerInterface $callable

any valid PHP callback type or an instance of EventListenerInterface

string|null $eventKey

The event unique identifier name with which the callback has been associated

off()

off(string|\Cake\Event\EventListenerInterface  $eventKey, callable|null  $callable = null) : $this

Remove a listener from the active listeners.

Remove a EventListenerInterface entirely:

$manager->off($listener);

Remove all listeners for a given event:

$manager->off('My.event');

Remove a specific listener:

$manager->off('My.event', $callback);

Remove a callback from all events:

$manager->off($callback);

Parameters

string|\Cake\Event\EventListenerInterface $eventKey

The event unique identifier name with which the callback has been associated, or the $listener you want to remove.

callable|null $callable

The callback you want to detach.

Returns

$this

dispatch()

dispatch(string|\Cake\Event\EventInterface  $event) : \Cake\Event\EventInterface

Dispatches a new event to all configured listeners

Parameters

string|\Cake\Event\EventInterface $event

The event key name or instance of EventInterface.

Returns

\Cake\Event\EventInterface

listeners()

listeners(string  $eventKey) : array

Returns a list of all listeners for an eventKey in the order they should be called

Parameters

string $eventKey

Event key.

Returns

array

prioritisedListeners()

prioritisedListeners(string  $eventKey) : array

Returns the listeners for the specified event key indexed by priority

Parameters

string $eventKey

Event key.

Returns

array

matchingListeners()

matchingListeners(string  $eventKeyPattern) : array

Returns the listeners matching a specified pattern

Parameters

string $eventKeyPattern

Pattern to match.

Returns

array

getEventList()

getEventList() : \Cake\Event\EventList

Returns the event list.

Returns

\Cake\Event\EventList

addEventToList()

addEventToList(\Cake\Event\Event  $event) : $this

Adds an event to the list if the event list object is present.

Parameters

\Cake\Event\Event $event

An event to add to the list.

Returns

$this

trackEvents()

trackEvents(boolean  $enabled) : $this

Enables / disables event tracking at runtime.

Parameters

boolean $enabled

True or false to enable / disable it.

Returns

$this

isTrackingEvents()

isTrackingEvents() : boolean

Returns whether this manager is set up to track events

Returns

boolean

setEventList()

setEventList(\Cake\Event\EventList  $eventList) : $this

Enables the listing of dispatched events.

Parameters

\Cake\Event\EventList $eventList

The event list object to use.

Returns

$this

unsetEventList()

unsetEventList() : $this

Disables the listing of dispatched events.

Returns

$this

__debugInfo()

__debugInfo() : array

Debug friendly object properties.

Returns

array

_attachSubscriber()

_attachSubscriber(\Cake\Event\EventListenerInterface  $subscriber) : void

Auxiliary function to attach all implemented callbacks of a Cake\Event\EventListenerInterface class instance as individual methods on this manager

Parameters

\Cake\Event\EventListenerInterface $subscriber

Event listener.

_extractCallable()

_extractCallable(array  $function, \Cake\Event\EventListenerInterface  $object) : callable

Auxiliary function to extract and return a PHP callback type out of the callable definition from the return value of the `implementedEvents` method on a Cake\Event\EventListenerInterface

Parameters

array $function

the array taken from a handler definition for an event

\Cake\Event\EventListenerInterface $object

The handler object

Returns

callable

_detachSubscriber()

_detachSubscriber(\Cake\Event\EventListenerInterface  $subscriber, string|null  $eventKey = null) : void

Auxiliary function to help detach all listeners provided by an object implementing EventListenerInterface

Parameters

\Cake\Event\EventListenerInterface $subscriber

the subscriber to be detached

string|null $eventKey

optional event key name to unsubscribe the listener from

_callListener()

_callListener(callable  $listener, \Cake\Event\Event  $event) : mixed

Calls a listener.

Parameters

callable $listener

The listener to trigger.

\Cake\Event\Event $event

Event instance.

Returns

mixed —

The result of the $listener function.