metro-markets / feature-flag-bundle
Metro Markets Symfony Feature flag Bundle for quickly integration with configcat and other providers.
Requires
- php: ^8.0 || ^7.3
- symfony/cache: ^5.0 || ^4.2
- symfony/config: ^5.0 || ^4.2
- symfony/dependency-injection: ^5.0 || ^4.2
- symfony/http-kernel: ^5.1.5 || ^4.2
- symfony/yaml: ^5.0 || ^4.2
Requires (Dev)
- configcat/configcat-client: ^5.0 || ^4.0
- phpunit/phpunit: ^9.0 || ^8.0 || ^7.0
Suggests
- configcat/configcat-client: Required whenever provider is configcat
- guzzlehttp/guzzle: Required whenever provider is rest
README
Metro Markets FF
Metro Markets FF is a Feature Flag Symfony Bundle. It easily allows you to configure and use your favorite feature flag provider.
Installation
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require metro-markets/feature-flag-bundle
Step 2: Enable the Bundle
(Please skip this step if you are using Symfony Flex)
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php
file of your project:
// config/bundles.php return [ // ... MetroMarkets\FFBundle\MetroMarketsFeatureFlagBundle::class => ['all' => true], ];
Step 3: Create the configuration
# config/packages/metro_markets_feature_flag.yaml metro_markets_feature_flag: provider: 'configcat' configcat: sdk_key: 'PKDVCLf-Hq-h-kCzMp-L7Q/HhOWfwVtZ0mb30i9wi17GQ' # Get it from ConfigCat Dashboard. cache: driver: 'cache.app' ttl: 60 logger: 'monolog.logger'
How to use it
After the installation is done you can simply inject the service anywhere and use it as follows:
use MetroMarkets\FFBundle\FeatureFlagService; class AnyService { /** @var FeatureFlagService */ private $featureFlagService; public function __construct(FeatureFlagService $featureFlagService) { $this->featureFlagService = $featureFlagService; } protected function someMethod() { $isEnabled = $this->featureFlagService->isEnabled('isMyAwesomeFeatureEnabled'); if ($isEnabled){ doTheNewStuff(); } else{ keepTheOld(); } } }
About providers
Currently, the only supported provider is configCat. Please, refer to the official PHP SDK for more details.
License
This package is open-sourced software licensed under the MIT license. Please for more info refer to the license