branchonline/yii2-eventtracker

扩展 Yii2 框架,添加了一些事件和状态跟踪类。

安装量: 3,117

依赖者: 0

建议者: 0

安全性: 0

星标: 1

关注者: 6

分支: 2

开放问题: 1

类型:yii2-extension

2.2 2019-02-04 12:18 UTC

This package is auto-updated.

Last update: 2024-09-16 03:16:17 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

目前,此包要求您使用与 Postgres 数据库兼容的 yii2!

当您想跟踪事件(在特定时间点发生)和状态(持续一段时间)信息而不修改数据库时,可以使用 eventtracker 包。

通过应用程序组件跟踪事件和状态信息。

eventtracker 允许通过将自定义类挂钩到核心功能来扩展跟踪功能。

安装

添加

"branchonline/yii2-eventtracker": "2.0"

到您的 composer.json

用法

调整提供的迁移,并确保插入您想跟踪的事件类型和状态键。运行迁移。

创建一个扩展 branchonline\eventtracker\EventTypes 的类,并将事件类型指定为类常量。

创建一个扩展 branchonline\eventtracker\StateKeys 的类,并将状态键指定为类常量。

添加

'eventtracker' => [
    'class'        => 'branchonline\eventtracker\EventTracker',
    'types_config' => '', // Class extending EventTypes
    'keys_config'  => '', // Class extending StateKeys
]

到您的应用程序配置中。

如果您想在事件处理完毕后添加额外的处理,创建一个实现 PostEventInterface 的类,并将其挂钩到配置中,如下所示

'eventtracker' => [
    'class'              => 'branchonline\eventtracker\EventTracker',
    'types_config'       => '', // Class extending EventTypes
    'keys_config'        => '', // Class extending StateKeys
    'post_event_handler' => '' // Your handler class, implementing the PostEventInterface
]

现在,您可以使用应用程序组件记录事件和状态,并进行可选的后处理!

示例

记录事件或状态更改
// Log that MY_EVENT happened for the current user with the optional data.
Yii::$app->eventtracker->logEvent(EventTypes::MY_EVENT, ['optional' => "data"]);

// Log that the state of MY_KEY changed to ['x' => 100].
Yii::$app->eventtracker->logState(StateKeys::MY_KEY, ['x' => 100]);
检索事件或状态
// Get the events between 1 jan 2016 and 1 feb 2016 for user 1 and 2 of type MY_EVENT_1 or MY_EVENT_2.
Yii::$app->eventtracker->eventsBetween(
    TrackerTime::fromUnixTimestamp(1451606400),
    TrackerTime::fromUnixTimestamp(1454284800),
    [1, 2],
    [EventTypes::MY_EVENT_1, EventTypes::MY_EVENT_2]
);

// Get the state of MY_KEY_1 and MY_KEY_2 at 1 jan 2016.
Yii::$app->eventtracker->stateAt(
    TrackerTime::fromUnixTimestamp(1451606400),
    [StateKeys::MY_KEY_1, StateKeys::MY_KEY_2]
);