filipe07/laravel-ab
Composer 安装命令:
composer require filipe07/laravel-ab
包简介
Laravel A/B experiment testing tool
README 文档
README
This package helps you to find out which content works on your site and which doesn't.
It allows you to create experiments and goals. The visitor will receive randomly the next experiment and you can customize your site to that experiment. The view and the goal conversion will be tracked and you can view the results in a report.
This package is very inspired and a mix of two other packages:
Installation
This package can be used in Laravel 8 or higher.
You can install the package via composer:
composer require filipe07/laravel-ab
Config
After installation publish the config file:
php artisan vendor:publish --provider="AbTesting\AbTestingServiceProvider"
You can define your experiments and goals in there.
Finally, run the newly added migration
php artisan migrate
Two new migrations should be added.
Usage
Variants
@if (AbTesting::isVariant('logo-big'))
<div class="logo-big"></div>
@elseif (AbTesting::isVariant('logo-grayscale'))
<div class="logo-greyscale"></div>
@elseif (AbTesting::isVariant('brand-name'))
<h1>Brand name</h1>
@endif
That's the most basic usage of the package. You don't have to initialize anything. The package handles everything for you if you call isVariant
Alternatively you can use a custom blade if statement:
@ab('logo-big')
<div class="logo-big"></div>
@elseab('logo-grayscale')
<div class="logo-greyscale"></div>
@elseab('brand-name')
<h1>Brand name</h1>
@endab
This will work exactly the same way.
If you don't want to make any continual rendering you can call
AbTesting::pageView()
directly and trigger a new page view with a random variant. This function will also be called from isVarian.
Under the hood a new session item will keep track of the current variant. A session will only get one variant and only trigger one page view.
You can grab the current variant with:
// get the underlying model AbTesting::getVariant() // get the variant name AbTesting::getVariant()->name // get the visitor count AbTesting::getVariant()->visitors
Alternatively there is a request helper for you:
public function index(Request $request) { // the same as 'AbTesting::getVariant()' $request->abVariant() }
Goals
To complete a goal simply call:
AbTesting::completeGoal('signup')
The function will increment the conversion of the goal assigned to the active variant. If there isn't an active variant running for the session one will be created. You can only trigger a goal conversion once per session. This will be prevented with another session item. The function returns the underlying goal model.
To get all completed goals for the current session:
AbTesting::getCompletedGoals()
Persisting visitor data
When used in the above way the visitor data is stored in session data attached to the user. In some cases you might want to trigger a goal completion in an asynchronous way and the users session won't be available. To avoid getting bad data by registering the goal completion under a new variant you can persist the visitor data in the database.
To do this you pass a user identifier to the pageview function.
AbTesting::pageview($identifier)
In your asynchronous request you can then provide the same idenfier to the completeGoals function.
AbTesting::completeGoal('payment-completed', $identifier)
Report
To get a report of the page views, completed goals and conversion call the report command:
php artisan ab:report
This prints something like this:
+---------------+----------+-------------+
| Variant | Visitors | Goal signup |
+---------------+----------+-------------+
| big-logo | 2 | 1 (50%) |
| small-buttons | 1 | 0 (0%) |
+---------------+----------+-------------+
Reset
To reset all your visitors and goal completions call the reset command:
php artisan ab:reset
Events
In addition you can hook into two events:
VariantNewVisitorgets triggered once an variant gets assigned to a new visitor. You can grab the variant and visitor instance as properties of the event.GoalCompletedgets triggered once a goal is completed. You can grab the goal as a property of the event.
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email moin@benjaminbortels.de instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.
filipe07/laravel-ab 适用场景与选型建议
filipe07/laravel-ab 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 60.78k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2022 年 04 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「laravel」 「ab-testing」 「laravel-package」 「laravel-5-package」 「ben182」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 filipe07/laravel-ab 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 filipe07/laravel-ab 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 filipe07/laravel-ab 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
🙋♀️ Minimal A/B Testing Library
Deck is a Laravel and PHP package for versioned, file-based AI prompt management with variable interpolation, performance tracking, A/B testing, and optional Laravel AI SDK integration.
Deck is a Laravel and PHP package for versioned, file-based AI prompt management with variable interpolation, performance tracking, A/B testing, and optional Laravel AI SDK integration.
Lightweight PHP micro-library for probabilistic and deterministic code execution — feature flags, A/B testing, gradual rollouts and sampling.
Alfabank REST API integration
Feature flagging API used for operational rampups and A/B testing
统计信息
- 总下载量: 60.78k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 25
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-04-04