Example usage of the PHP SDK
A brief code example of how to use the Optimizely Feature Experimentation PHP SDK to evaluate feature flags, activate A/B tests, or feature tests.
After installing the PHP SDK, import the Optimizely library, get your project's datafile, and create a client. Use the client to evaluate flag rules like A/B tests and flag deliveries.
This example walks through the following three key steps:
-
Evaluate a flag with the key
product_sortusing thedecidemethod. This also sends a decision event to Optimizely to record that the user was exposed to the experiment. -
Run code based on the flag result. The SDK evaluates your flag rules and determines which variation the user is in. You can either:
- Check the flag's enabled state and read a configuration variable (
sort_method) to determine which experience the user gets. - Check the flag variation directly and run the corresponding control or treatment code.
- Check the flag's enabled state and read a configuration variable (
-
Track a conversion event called
purchasedto measure the experiment's impact. ThetrackEventmethod ties the purchase back to the A/B test and sends it to Optimizely so it displays on your Experiment Results page.
use Optimizely\Optimizely;
// Instantiate an Optimizely client
$sdkKey = "<Your_SDK_Key>";
$optimizelyClient = OptimizelyFactory::createDefaultInstance($sdkKey);
$user = $optimizelyClient->createUserContext('user123', ['logged_in' => true]);
$decision = $user->decide('product_sort');
$variation = $decision->getVariationKey();
if ($variation == null) {
$reasons = $decision->getReasons();
$reasons = json_encode($reasons);
echo "[decide] error: {$reasons}";
}
// execute code based on flag variable
$enabled = $decision->getEnabled();
if ($enabled) {
$sort_method = (string) $decision->getVariables()['sort_method'];
}
// or execute code based on flag variation:
if ($variation == 'control') {
// Execute code for variation A
} else if ($variation == 'treatment') {
// Execute code for variation B
} else {
// Execute code for users who don't qualify for the experiment
}
// Track an event
$user->trackEvent('purchased');Updated 12 days ago
