filipe07 / laravel-ab
Laravel A/B 测试工具
Requires
- php: ^7.2 | ^8.0
- illuminate/support: ^7.0 | ^8.0 | ^9.0 | ^10.0
- jaybizzle/crawler-detect: ^1.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- mockery/mockery: ^1.0
- orchestra/testbench: 3.9.* | ^6.0
- phpunit/phpunit: ^8.0 | ^9.0
This package is auto-updated.
Last update: 2024-09-11 14:47:32 UTC
README
本包可以帮助您找出哪些内容在您的网站上有效,哪些无效。
它允许您创建实验和目标。访客将随机收到下一个实验,您可以根据该实验定制您的网站。视图和目标转换将被跟踪,您可以在报告中查看结果。
本包受到了两个其他包的启发和混合
安装
本包可在 Laravel 8 或更高版本中使用。
您可以通过 composer 安装此包
composer require filipe07/laravel-ab
配置
安装后发布配置文件
php artisan vendor:publish --provider="AbTesting\AbTestingServiceProvider"
您可以在其中定义您的实验和目标。
最后,运行新添加的迁移
php artisan migrate
应添加两个新的迁移。
使用方法
变体
@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
这是本包最基本的使用方法。您无需初始化任何内容。如果调用 isVariant
,包会为您处理一切。
或者您可以使用自定义的 blade if 语句
@ab('logo-big') <div class="logo-big"></div> @elseab('logo-grayscale') <div class="logo-greyscale"></div> @elseab('brand-name') <h1>Brand name</h1> @endab
这将以完全相同的方式工作。
如果您不希望进行任何持续的渲染,您可以调用
AbTesting::pageView()
直接触发一个新的页面视图和一个随机的变体。此函数也将从 isVarian
中调用。
在底层,一个新的会话项目会跟踪当前变体。会话只会获得一个变体,并只会触发一个页面视图。
您可以使用以下方式获取当前变体
// get the underlying model AbTesting::getVariant() // get the variant name AbTesting::getVariant()->name // get the visitor count AbTesting::getVariant()->visitors
或者,还有一个请求助手供您使用
public function index(Request $request) { // the same as 'AbTesting::getVariant()' $request->abVariant() }
目标
要完成一个目标,只需调用
AbTesting::completeGoal('signup')
此函数将增加分配给活动变体的目标的转换。如果会话中没有运行活动变体,将创建一个。您只能在每个会话中触发一次目标转换。这将通过另一个会话项目来防止。函数返回底层的目标模型。
要获取当前会话中完成的所有目标
AbTesting::getCompletedGoals()
持久化访客数据
当以这种方式使用时,访客数据将存储在附加到用户的会话数据中。在某些情况下,您可能希望以异步方式触发目标完成,而用户的会话可能不可用。为了避免在新的变体下注册目标完成而导致数据错误,您可以将访客数据持久化到数据库中。
为此,您需要将用户标识符传递给页面视图函数。
AbTesting::pageview($identifier)
在您的异步请求中,然后您可以向 completeGoals 函数提供相同的标识符。
AbTesting::completeGoal('payment-completed', $identifier)
报告
要获取页面视图、完成的目标和转换的报告,请调用报告命令
php artisan ab:report
这将打印出类似以下的内容
+---------------+----------+-------------+
| Variant | Visitors | Goal signup |
+---------------+----------+-------------+
| big-logo | 2 | 1 (50%) |
| small-buttons | 1 | 0 (0%) |
+---------------+----------+-------------+
重置
要重置所有访客和目标完成,请调用重置命令
php artisan ab:reset
事件
此外,您还可以挂钩到两个事件
VariantNewVisitor
在变体分配给新访客时触发一次。您可以通过事件的属性获取变体和访客实例。GoalCompleted
在目标完成时触发一次。您可以通过事件的属性获取目标。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG
贡献
请参阅CONTRIBUTING以获取详细信息。
安全性
如果您发现任何与安全相关的问题,请发送电子邮件至moin@benjaminbortels.de,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
Laravel包模板
此包是使用Laravel包模板生成的。