charm/hooks

一个强大的钩子库,允许在组件之间扩展和集成。

0.0.6 2021-07-01 09:20 UTC

This package is auto-updated.

Last update: 2024-09-09 17:22:31 UTC


README

提供一组函数,用于实现工具之间的集成。

用法

获取第一个真值响应

// 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");
}

过滤一些数据

// 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()));

从零个或多个监听器查询数据

Charm\Hooks::instance()->listen('toolbar buttons', function() {
    return new Button("Logout");
});

foreach (Charm\Hooks::instance()->dispatch('toolbar buttons') as $button) {
    echo $button->renderHtml();
}