A package to manage feature flags in your application. Currently supporting these providers:
You can install the package via composer:
composer require worksome/feature-flags
You can publish the config file with:
php artisan vendor:publish --tag="feature-flags-config"
This is the contents of the published config file:
declare(strict_types=1);
use Worksome\FeatureFlags\ModelFeatureFlagConvertor;
// config for Worksome/FeatureFlags
return [
'default' => env('FEATURE_FLAGS_PROVIDER', 'launchdarkly'),
'convertor' => ModelFeatureFlagConvertor::class,
'providers' => [
'launchdarkly' => [
'key' => env('LAUNCHDARKLY_SDK_KEY'),
'options' => [
/**
* https://docs.launchdarkly.com/sdk/features/offline-mode
*/
'offline' => env('LAUNCHDARKLY_OFFLINE', false)
]
]
],
/**
* Overrides all feature flags directly without hitting the provider.
* This is particularly useful for running things in the CI,
* e.g. Cypress tests.
*/
'override-all' => env('FEATURE_FLAGS_OVERRIDE_ALL'),
/**
* Override flags. If a feature flag is set inside an override,
* it will be used instead of the flag set in the provider.
*
* Usage: ['feature-flag-key' => true]
*/
'overrides' => [],
];
Feature flags should be registered using one or more enums containing your feature flags.
All feature flag enums must implement the Worksome\FeatureFlags\Contracts\FeatureFlagEnum
contract.
For example, if you had a feature flag called flag-one
, you could create an enum with the following:
namespace App\Enums;
enum FeatureFlag: string implements \Worksome\FeatureFlags\Contracts\FeatureFlagEnum
{
case FlagOne = 'flag-one';
}
@feature(\App\Enums\FeatureFlag::FlagOne)
This is content under a feature flag.
@endfeature
Please see the Releases for more information on what has changed recently.
We pride ourselves on a thorough test suite and strict static analysis. You can run all of our checks via a composer script:
composer test
To make it incredibly easy to contribute, we also provide a docker-compose file that will spin up a container with all the necessary dependencies installed. Assuming you have docker installed, just run:
docker-compose run --rm composer install # Only needed the first time
docker-compose run --rm composer test # Run tests and static analysis
Support for XDebug is baked into the Docker image, you just need to configure the XDEBUG_MODE
environment variable:
docker-compose run --rm -e XDEBUG_MODE=debug php
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.