2dotstwice/silex-feature-toggles-provider

Feature toggles for Silex

Maintainers

👁 cyberwolf

Package info

github.com/2dotstwice/silex-feature-toggles-provider

pkg:composer/2dotstwice/silex-feature-toggles-provider

Statistics

Installs: 14 290

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master / 0.x-dev 2017-07-03 14:15 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 1d90390bf037114d6c17f166022c2efa68e3cec7

This package is auto-updated.

Last update: 2026-06-29 01:01:43 UTC


README

👁 Build Status

Installation

Service provider

Register the FeatureTogglesProvider with your Silex application. $featureToggleConfiguration should be an array with the toggle configuration. You can for example retrieve this from a configuration file, but how to handle that is up to your application.

$app->register(
 new \TwoDotsTwice\SilexFeatureToggles\FeatureTogglesProvider(
 $featureToggleConfiguration
 )
);

At 2dotstwice, we've been successfully using this together with DerAlex's YamlConfigServiceProvider.

$app->register(new \DerAlex\Silex\YamlConfigServiceProvider(__DIR__ . '/config.yml'));

$app->register(
 new \TwoDotsTwice\SilexFeatureToggles\FeatureTogglesProvider(
 $app['config']['toggles']
 )
);

The contents of config.yml might look like this:

toggles:
 profile-date-of-birth:
 name: profile-date-of-birth
 conditions: {}
 status: always-active
 remember-password-option:
 name: remember-password-option
 conditions: {}
 status: inactive

For details on the configuration semantics, consult the documentation of Qandidate's Toggle library.

Tiny REST API

Additionally, you can add a small REST API which exposes the state of the toggles by mounting the FeatureTogglesControllerProvider in your Silex application. This might be useful for manual inspection, or when the state of the toggles is needed on a decoupled front-end.

$app->mount('/', new \TwoDotsTwice\SilexFeatureToggles\FeatureTogglesControllerProvider());

A request to /toggles will return a JSON response. An example of a response body:

{
 "profile-date-of-birth": true,
 "remember-password-option": false
}

true means the toggle is currently ON, false means it is OFF.