Wallogit.com
2017 © Pedro Peláez
A generic A/B test handler for Yii2
A simple extension for writing A/B Tests in Yii2., (*1)
This extension does not include the hooks for various programs, but does allow you to list() so you can quickly
add it to your analytics code., (*2)
Simply include it from composer:, (*3)
php ./composer.phar require sammaye/yii2-abtest:"@stable"
Easiest thing is to just show an example of my configuration:, (*4)
'test' => [
'class' => 'sammaye\abtest\Test',
'filter' => [
'rules' => [
[
'allow' => false,
'roles' => ['staff']
]
]
],
'tests' => [
[
'name' => 'Beta Search',
'values' => ['old', 'new'],
'default' => 'new'
]
]
],
The configuration breaks down into two parameters:- filter and tests., (*5)
Only tests is required., (*6)
filter allows you to use the AccessControl like you would on any controller and
provide a set of rules whereby the tests should not take effect., (*7)
When an 'allow' => false filter is matched the test will return the default parameter from the test you are looking at
and will not not record it in $_SESSION., (*8)
This way, when you come to list() at the end of the page to push onwards for analytics, these tests will not appear in that list., (*9)
Once it is fully configured you can just use it to detect which path a user takes:, (*10)
Yii::$app->test->value('Beta Search')
This function will return either old or new depending on whether I am a staff member or lady random chooses me., (*11)
In order to add it to your analytics code you need to list all active tests and their values:, (*12)
Yii::$app->test->list()
This will then print out a list of (for me):, (*13)
[
'Old Search' => [
'name' => 'Old Search',
'value' => 'old' // active
// custom data could be housed
// here from the configuration like "goal"
]
]
So, the key is name of the test and the value is the configuration object but with values replaced with only the active value., (*14)