✅ We are only fixing critical bugs and security issues.
❌ No new features, enhancements, or non-critical updates will be added.
VWO’s FME product empowers teams to seamlessly test, release, optimize, and roll back features across their entire tech stack while minimizing risk and maximizing business impact.
💡 Need Help? For migration assistance or any questions, contact us at [email protected]
This open source library provides you server-side testing capabilities.
PHP >= 5.6
Install the latest version with
composer require vwo/vwo-php-sdk
Use the below code for inital setup.
<?php
require_once('vendor/autoload.php');
require_once('userStorage.php'); // Optional :if you are using UserStorage service feature
require_once('customLogger.php');// Optional :if you are using custom logging feature
use vwo\VWO;
$accountId = REPLACE_WITH_VWO_ACCOUNT_ID; // eg: 123456
$sdkKey = 'REPLACE_WITH_TOKEN'; // eg: can be found in VWO app - FullStack project
$campaignKey = 'CAMPAIGN_UNIQUE_TEST_KEY';
$userId = 'USER_ID';
$goalIdentifier = 'REPLACE_WITH_CAMPAIGN_GOAL_IDENTIFIER';
// to fetch the settings i.e campaigns, variations and goals
$settingsFile = VWO::getSettingsFile($accountId, $sdkKey);
$sdkConfig = [
'settingsFile' => $settingsFile,
'isDevelopmentMode' => 0, // optional: 1 to enable the dev mode
'logging' => new CustomLogger(), // optional
'userStorageService' => new userStorageService() // optional
];
$vwoClient = new VWO($sdkConfig);
// to get the variation name along with add a visitor hit to vwo app stats
$variation = $vwoClient->activate($campaignKey, $userId, $options);
// Or, to get the variation name
$variation = $vwoClient->getVariationName($campaignKey, $userId, $options);
// add code here to use variation
//...
/**
*send the track api hit to the vwo app stats to increase conversions
* $revenue is optional send in case if there is any revenue inside $options
*/
$vwoClient->track($campaignKey, $userId, $goalIdentifier, $options);
Code for implementing User Storage Service
<?php
require_once('vendor/autoload.php');
use vwo\Utils\UserStorageInterface;
Class UserStorage implements UserStorageInterface{
/**
* @param $userId
* @param $campaignKey
*
* @return array
*/
public function get($userId, $campaignKey) {
// search in DB/Storage system
$variation = $db->fetch($userId, $campaignKey); // replace with your implementation
return[
'userId' => $userId,
'campaignKey' => $campaignKey,
'variationName' => $variation
];
}
/**
* @param $campaignUserMapping
* @return bool - could be changed
*/
public function set($campaignUserMapping) {
// S...code to store in DB/storage system
return True;
}
}
Code for implementing Custom Logger
<?php
require_once('vendor/autoload.php');
use vwo\Logger\LoggerInterface;
/**
* Class CustomLogger
*/
Class CustomLogger implements LoggerInterface{
/**
* @param $message
* @param $level
*
* @return
*/
public function log($message, $level){
// use $level and log $message to either print or store them for later use
}
}
Refer Official VWO Documentation
Refer third-party-attributions.txt
Refer CHANGELOG.md
- Set development environment
composer run-script start
- Run test cases
composer run-script test
- Run linter
composer run-script test
- Run code beautifier
composer run-script phpcbf
Copyright 2019-2022 Wingify Software Pvt. Ltd.