Skip to content

Conversation

@vroomfondle
Copy link
Contributor

Changes

Add ability to retrieve a list of listeners for a specific hook:

$fooListeners = Hook::getListeners('fooHook');

Why?

We wanted to use hooks to filter an array of values. This is difficult because Hook calls the default internal function in both of these circumstances:

  • No listeners were executed
  • Listeners were executed, but the output of the listeners was empty.

If no listeners were executed, we want the array to be unfiltered. If listeners were executed and they removed all values from the array, we want the array to be empty. Therefore, we want a different result in each circumstance, but the internal function does not "know" which circumstance has occurred.

The easiest solution is to check whether any listeners have been registered, and then skip the hook entirely if there are no listeners.

Currently this can be done by calling Hook::getListeners() but then the caller needs to do some logic to check whether the relevant array key has been set. It seems neater if getListeners() can take a hook name and then just return the listeners which are registered for that hook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant