apurbajnu / abtest
Laravel 8 AB测试包
Requires
- php: ^7.4 || ^8.0
- jaybizzle/crawler-detect: ^1.2
- laravel/framework: ^5.3 || ^6.0 || ^7.0 || ^8.0 || ^9.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: 3.9.*
- phpunit/phpunit: ^8.0 | ^9.0
This package is auto-updated.
Last update: 2024-09-06 20:37:24 UTC
README
此包可以帮助您找出哪些内容在您的网站上有效,哪些无效。
它允许您创建实验和目标。访问者将随机收到下一个实验,您可以自定义网站以适应该实验。视图和目标转换将被跟踪,您可以在报告中查看结果。
安装
此包是ben182/laravel-ab的克隆版,与Laravel 8兼容。此包与Laravel 8兼容。
您可以通过composer安装此包
composer require apurbajnu/abtest
配置
安装后发布配置文件
php artisan vendor:publish --provider="Apurbajnu\abtest\AbtestServiceProvider"
您可以在其中定义您的实验和目标。
最后,运行新添加的迁移
php artisan migrate
应添加两个新迁移。
用法
实验
@if (Abtest::isExperiment('logo-big')) <div class="logo-big"></div> @elseif (Abtest::isExperiment('logo-grayscale')) <div class="logo-greyscale"></div> @elseif (Abtest::isExperiment('brand-name')) <h1>Brand name</h1> @endif
这是此包最基本的使用方法。您不需要初始化任何内容。如果您调用isExperiment
,则包会为您处理一切。
或者您可以使用自定义的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
这将完全以相同的方式工作。
如果您不想进行任何连续渲染,可以调用
Abtest::pageView()
直接触发一个带有随机实验的新页面视图。此函数也将从isExperiment
中调用。
在底层,一个新的session项将跟踪当前实验。一个session只会得到一个实验,只会触发一个页面视图。
您可以使用以下方式获取当前实验
// get the underlying model Abtest::getExperiment() // get the experiment name Abtest::getExperiment()->name // get the visitor count Abtest::getExperiment()->visitors
或者有一个请求助手可供您使用
public function index(Request $request) { // the same as 'Abtest::getExperiment()' $request->abExperiment() }
目标
要完成目标,只需调用
Abtest::completeGoal('signup')
该函数将增加分配给活动实验的目标转换。如果没有为session运行活动实验,将创建一个。您只能在每个session中触发目标转换一次。这将通过另一个session项来防止。函数返回底层的目标模型。
要获取当前session中完成的所有目标
Abtest::getCompletedGoals()
机器人和爬虫
此包可以尝试忽略机器人和爬虫注册页面视图。只需在配置中启用ignore_crawlers
选项。
报告
要获取页面视图、完成的目标和转换的报告,请调用报告命令
php artisan ab:report
这将打印出类似以下的内容
+---------------+----------+-------------+
| Experiment | Visitors | Goal signup |
+---------------+----------+-------------+
| big-logo | 2 | 1 (50%) |
| small-buttons | 1 | 0 (0%) |
+---------------+----------+-------------+
重置
要重置所有访问者和目标完成情况,请调用重置命令
php artisan ab:reset
事件
此外,您还可以挂钩到两个事件
ExperimentNewVisitor
在一次实验被分配给新访问者时触发。您可以获取实验作为事件的属性。GoalCompleted
在一次目标完成时触发。您可以获取目标作为事件的属性。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现任何与安全相关的问题,请通过电子邮件moin@benjaminbortels.de联系,而不是使用问题跟踪器。
鸣谢
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件。
Laravel Package Boilerplate
本包使用 Laravel Package Boilerplate 生成。