abrouter/laravel-abtest

AbrLaravelClient :construction_worker_woman: 是用于 Laravel 运行 A/B 测试的 PHP 客户端,通过 ABRouter。

0.35.0 2024-09-21 16:36 UTC

README

ABRouter AB Test 👷‍♀️ 是一个用于通过 ABRouter (开源) 在 Laravel 上运行 A/B 测试的简单包。您可以在 https://github.com/abrouter/abrouter-php-client 找到基本 PHP 库。

欢迎您访问文档 https://docs.abrouter.com/docs/intro/

学习如何在您的服务器上部署 ABRouter.

ABRouter 服务是什么?

ABRouter 是一个开源产品,用于管理实验(A/B 分裂测试)。该服务提供了一个易于管理的仪表板,以控制实验。您可以创建实验、分支,并为每个分支设置百分比。然后,当您在 PHP 上运行 A/B 测试时,您将收到遵循您设置的规则的完美分支级响应。

提供功能标志(功能开关),免费且开源。

您可以通过以下链接找到 ABRouter 产品的源代码: https://github.com/abrouter/compose

功能

🛠 A/B 测试

🛠 功能标志

🛠 内置统计

🛠 不可思议的 UI 管理它

🛠 并行运行(非阻塞 A/B 测试运行)

准备您的第一个 A/B 测试

除了安装此包外,您还需要在 ABRouter 上有一个账户。您的令牌和实验 ID 也会在那里。您可以自由阅读分步说明 在 Laravel 上实现 A/B 测试

📦 安装

通过 composer

$ composer require abrouter/laravel-abtest

设置服务提供者

此包提供服务提供者的自动发现

如果 Laravel 包自动发现已禁用,请手动将服务提供者添加到 /config/app.php。您必须添加以下服务提供者

\Abrouter\LaravelClient\Providers\AbrouterServiceProvider::class

发布客户端配置

php artisan vendor:publish --tag=abrouter

配置 ABRouter 客户端

将您的 ABRouter 令牌放入 /config/abrouter.php。您可以在 ABRouter 仪表板 中找到此令牌。

use Abrouter\LaravelClient\Bridge\KvStorage;
use Abrouter\LaravelClient\Bridge\ParallelRunning\TaskManager;

return [
    'token' => '14da89de1713a74c1ed50aafaff18c24bf372a9913e67e6a7a915def3332a97c9c9ecbe2cd6d3047',
    'host' => 'https://abrouter.com',
    'parallelRunning' => [
        'enabled' => true, //parallel running, enabled by default. See next section.
        'taskManager' => TaskManager::class,
    ],
    'kvStorage' => KvStorage::class
];

配置并行运行

并行运行是一个允许您异步运行 A/B 测试的功能。它需要可用的 Laravel 缓存(可能是 Redis)。

此功能允许缓存实验分支以在本地运行实验,然后使用 Laravel 内置的队列与 ABRouter 服务器同步数据。请确保您已启用 Laravel 的监控器配置、队列和缓存存储以使用此功能。

并行运行允许您在不阻塞的情况下运行 A/B 测试。此外,您还可以自行配置它。

🚀 运行 A/B 测试

use Abrouter\Client\Client;

class ExampleController
{
    public function __invoke(Client $client)
    {
        $userId = auth()->user()->id;
        $buttonColor = $client->experiments()->run($userId, 'button_color');
        return view('button', [
            'color' => $buttonColor->getBranchId(),
        ]);
    }
}

🚀 运行功能标志

use Abrouter\Client\Client;

class ExampleController
{
    public function __invoke(Client $client)
    {
        $isEnabledButton = $client->featureFlags()->run('enabled_button_feature_flag');

        return view('featureFlags', [
            'enabledButtonFeatureFlag' => $isEnabledButton,
        ]);
    }
}

🚀 发送统计信息

use Abrouter\Client\Client;
use Abrouter\Client\Builders\StatEventBuilder;

class ExampleController
{
    public function __invoke(Client $client, StatEventBuilder $statEventBuilder)
    {
        $userId = auth()->user()->id;
        //sending button_click event as button_click+1
        $client->statistics()->sendEvent(
            $eventBuilder
                ->incremental()
                ->event('button_click')
                ->setUserId($userId)
                ->build()
        );
        
        //sending purchase event with purchase amount (+30)
        $client->statistics()->sendEvent(
            $eventBuilder
                ->summarize()
                ->event('purchase')
                ->setValue(30)
                ->setUserId($userId)
                ->build()
        );
    }
}

有关发送事件的更多详细信息,请参阅 StatEventBuilder 类。

管理 UI

您可以在ABRouter上创建实验/功能标志,并设置统计数据,获取您的实验令牌和ID,或者直接阅读文档

示例

您可以通过以下链接获取一个容器化使用示例:(https://github.com/abrouter/laravel-example

🔧 贡献

请随意进行Fork并提交Pull Requests。本项目遵循语义化版本控制2PSR-2

📄 许可证

GPL3。请参阅许可证文件获取更多信息。