charm / hooks
A powerful Hooks library, to allow extending and integrating between components.
0.0.6
2021-07-01 09:20 UTC
Requires
- charm/error: ^0
README
Provides a set of functions that enables integration between tools.
Usage
Get first truthy response:
// Integrating:
Charm\Hooks::instance()->listen('e-mail invalid', function($value) {
if (str_ends_with($value, '@company.com')) {
return "E-mail address must end with $company.com";
}
});
// Enabling integration:
if ($reason = Charm\Hooks::instance()->dispatchToFirst('e-mail invalid')) {
throw new Exception("Invalid e-mail: $reason");
}
Filter some data:
// Integrating
Charm\Hooks::instance()->listen('user api-response', function($value) {
unset($value['email']);
unset($value['password']);
return $value;
});
// Filtering
echo json_encode(Charm\Hooks::instance()->filter('user api-response', $user->jsonSerialize()));
Query for data from zero or more listeners
Charm\Hooks::instance()->listen('toolbar buttons', function() {
return new Button("Logout");
});
foreach (Charm\Hooks::instance()->dispatch('toolbar buttons') as $button) {
echo $button->renderHtml();
}