Scabbia2 Events Component
This component is a simple event dispatcher allows registering callbacks to some events and chain execution of them., (*1)
, (*2)
Usage
Delegates
use Scabbia\Events\Delegate;
$delegate = new Delegate();
$delegate->subscribe(function (...$parameters) {
echo 'first subscriber:';
var_dump($parameters);
});
$delegate->subscribe(function (...$parameters) {
echo 'second subscriber:';
echo count($parameters);
});
$delegate->invoke('a', 'b', 'c');
Delegates with priorities
use Scabbia\Events\Delegate;
$delegate = new Delegate();
// a subscription with priority = 300
$delegate->subscribe(function (...$parameters) {
echo 'first subscriber:';
var_dump($parameters);
}, null, 300);
// a subscription with priority = 1 (will be executed first)
$delegate->subscribe(function (...$parameters) {
echo 'second subscriber, but more important:';
echo count($parameters);
}, null, 1);
$delegate->invoke('a', 'b', 'c');
Delegates with breaking
use Scabbia\Events\Delegate;
$delegate = new Delegate();
$delegate->subscribe(function (...$parameters) {
echo 'first subscriber:';
var_dump($parameters);
// breaks the execution
return false;
});
$delegate->subscribe(function (...$parameters) {
echo 'second subscriber, but not going to be executed:';
echo count($parameters);
});
$delegate->invoke('a', 'b', 'c');
Events
use Scabbia\Events\Events;
$eventsManager = new Events();
$eventsManager->on('click', function (...$parameters) {
echo "clicked on x={$parameters[0]} and y={$parameters[1]}!";
});
$eventsManager->on('double_click', function (...$parameters) {
echo 'double clicked!';
});
$eventsManager->dispatch('click', 5, 10);
Links
Contributing
It is publicly open for any contribution. Bugfixes, new features and extra modules are welcome. All contributions should be filed on the eserozvataf/scabbia2-events repository., (*3)
- To contribute to code: Fork the repo, push your changes to your fork, and submit a pull request.
- To report a bug: If something does not work, please report it using GitHub issues.
- To support: