treehouselabs/feature-toggle

Feature toggle library

1.0.3 2018-02-21 16:00 UTC

This package is not auto-updated.

Last update: 2024-12-07 21:06:44 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score

Simple feature toggle library

Installation

composer require treehouselabs/feature-toggle

Usage

$features = new FeatureToggleCollection();
$features->registerToggle(
    'feature-x',
    new BooleanFeatureToggle(true)
);

if ($features->isEnabled('feature-x')) {
    // perform stuff for feature-x
}

Behat context

# behat.yml

default:
  suites:
    default:
        contexts:
          - TreeHouse\FeatureToggle\Bridge\Behat\FeatureToggleContext:
              cacheItemPool: '@cache_item_pool' #PSR-6 cache item pool
<?php
   class Feature
   {
       private $features;

       public function __construct(FeatureToggleCollectionInterface $features) {
           $this->features = $features;
       }

       public function indexAction()
       {
           if ($this->features->isEnabled('feature-y')) {
               return 'Enabled!';
           }

           return 'Disabled!';
       }
   }

   $toggleCollection = new CacheFeatureToggleCollection();
   $toggleCollection->setCacheItemPool($psr6CacheItemPool);

   // Overwrite the FeatureToggleCollection with the CacheFeatureToggleCollection in test env
   new Feature($toggleCollection);
# feature-y.feature

Feature: Feature-Y

  Scenario: Feature-Y is enabled
    Given the feature toggle "feature-y" is enabled
    And I am on the homepage
    Then I should see "Enabled!"

  Scenario: Feature-Y is disabled
#   Given the feature toggle "feature-y" is disabled (default)
    Given I am on the homepage
    Then I should see "Disabled!"

Testing

composer test

Security

If you discover any security related issues, please email dev@treehouse.nl instead of using the issue tracker.

License

The MIT License (MIT). Please see License File for more information.

Credits