use \FeatureToggle\FeatureToggleManager;
use \FeatureToggle\Condition\StaticCondition;
use \FeatureToggle\FeatureToggle\FeatureToggle;
use \FeatureToggle\Repository\ArrayRepository;
$featureToggle = new FeatureToggle('my-feature-toggle', new StaticCondition(true));
$repository = new ArrayRepository($featureToggle);
$featureToggleManager = new FeatureToggleManager($repository);
// ...
$canIUseMyFeature = $featureToggleManager->get('my-feature-toggle'); // true
You might want to have multiple repositories: one which loads each feature toggle from persistent storage like a
database or Redis, and in front of it hardcoded values with ArrayFeatureToggleRepository
:
$overrideFeatureToggle = new StaticFeatureToggle('my-feature-toggle', false);
$staticRepository = new ArrayFeatureToggleRepository($overrideFeatureToggle);
// ...
// database has feature-toggle `my-feature-toggle` with value `true`
$dbRepository = new DatabaseFeatureToggleRepository($user);
// first repo with key wins
$featureToggleManager = new FeatureToggleManager($staticRepository, $dbRepository);
// ...
$canIUseMyFeature = $featureToggleManager->get('my-feature-toggle'); // false