Skip to content
Simple event dispatching library for PHP
PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
.travis.yml
LICENSE
README.md
composer.json

README.md

Sphido / Events

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

Events is simple pure functional event dispatching library for PHP 5.5+ and have nice and clear interface with function on(), one(), off(), trigger(), filter(), ensure(), listeners(), events() - that's all!

With sphido/events can:

  • listeners prioritization
  • add/remove listeners
  • filter values by functions
  • stop propagation in function chain
  • and have event default handler

Trigger event

on('event', function () {
  echo "wow it's works yeah!";
});

trigger('event'); // print wow it's works yeah!

Function trigger() return array of all callback listeners results.

Listeners prioritization

on(	'event', function () { echo " stay hungry"; }, 200);
on(	'event', function () { echo "stay foolish"; }, 100);

trigger('event'); // print "stay foolish stay hungry"

Notice: default event priority is 10!

Filter - change value by listeners

Function filter() return result of all callback function hook to event. Filtred value it's transmitted from one function to another.

add_filter('price', function($price) {
  return (int)$price . ' USD';
});

echo filter('price', 100); // print 100 USD
    
add_filter('price', function($price) {
  return 'The price is: ' . $price ;
});

echo filter('price', 100); // print The price is: 100 USD

This function it's basically copy of Wordpress add_filter and apply_filters functions.

Ensure handler

Sometimes you need ensure that will be handled by some default function, but need allow overridden that function by something else.

on('render', function () { echo 'my custom renderer'; });

echo ensure('render', function () {
  return 'default renderer';
});
// print "my custom renderer"

Remove listener from event

Add and remove listener:

$handler = function() { };
on('event', $handler); // add
off('event', $handler); // remove

Add and remove all listeners:

$handler = function() { };
on('event', $handler);
on('event', $handler);
on('event', $handler);
off('event'); // remove all listeners

Call listener just once

one('event', function(){ echo "called me once"; });
 
trigger('event'); // will print "called me once" 
trigger('event'); // will print nothing

Stop propagation example

on('event', function () { echo 'a'; });
on('event', function () { echo 'b'; });
on('event', function () { echo 'c'; return false; }); // stop propagation now
on('event', function () { echo 'd'; });

trigger('event'); // print abc

Trigger multiple events at once

on('one', function () { echo 'you know that: ';});
on('two', function ($a, $b) { echo " $a is not $b ";});

trigger(['one', 'two'], 100, 200); // print 'you know that: 100 is not 200'

Apply multiple filters at once

add_filter('one', function ($array) { return array_sum($array);});
add_filter('two', function ($value) { return 'Suma is ' . $value;});

filter(['one', 'two'], [10, 20, 30, 40])); // output will be 'Suma is 100'

Getting listeners array

Getting events static stdClass:

events(); // return all events
events()->hook; // return selected hook

Getting listeners array:

listeners('hook'); // return hook listeners

For more examples visit tests.

You can’t perform that action at this time.