---
title: Update usage from older versions of the PHP SDK
slug: feature-experimentation/docs/migrate-from-older-versions-php
docTags: 
createdAt: 2026-08-05T20:40:00.000Z
---

This section provides code examples for how You should leveraging the new [Decision](docId\:F9xX8jXINfiqW_X0uYcZk) and [Event Tracking](docId\:kVuqN1eWmfu_JGnMnXarJ) APIs. All existing [Full Stack (Legacy)](docId:6_ik6SSz-WyJLWuCQw7BT) methods and implementation are still supported. See [Optimizely Feature Experimentation - application & migration](docId\:bykQnE4aGRkC5WXhU6Yi5) documentation for the latest updates.

You should adopting the new `Decide`, `Decide All`, and `Track Event` methods as a more flexible and easier-to-use replacement where you currently use `isFeatureEnabled`, `getFeatureVariable`, `getAllFeatures`, or `Track` calls within your implementation.

The following are examples of how to migrate the Full Stack (Legacy) methods to Feature Experimentation methods:

```php
// -------------------------------
// Prereq for new methods: create a user
// ------------------------------
$attributes = ['is_logged_in' => true];
$user = $optimizely->createUserContext('user_123', $attributes);

// -------------------------------
// Is Feature Enabled 
// ------------------------------
// old method
$enabled = $optimizely->isFeatureEnabled('flag_1', 'user_123', $attributes);

// new method
$decision = $user->decide('flag_1');
$enabled = $decision->getEnabled();

// -------------------------------
// Activate & Get Variation 
// ------------------------------
// old method
$variationKey = $optimizely->activate('experiment_1', 'user_123', $attributes);
// new method
$variationKey = $decision->getVariationKey();



// -------------------------------
// Get All Feature Variables 
// ------------------------------
// old method
$allVarValues = $optimizely->getAllFeatureVariables('flag_1',
                                                   'user_123',
                                                   $attributes); 
// new method
$allVarValues = $decision->getVariables();


// -------------------------------
// Get Enabled Features 
// ------------------------------
// old method
$enabledFlags = $optimizely->getEnabledFeatures('user_123');

// new method
$decisions = $user->decideAll(['ENABLED_FLAGS_ONLY']);
$enabledFlags = array_keys($decisions);


// -------------------------------
// Track 
// ------------------------------
// old method
$optimizely->track('my_purchase_event_key',
                   'user_123',
                   $attributes,
                   ['purchase_count' => 2]);

// new method
$user->trackEvent('my_purchase_event_key', ['purchase_count' => 2]);
```
