Skip to content

Allows you to enable or disable features in your application and dispatch the proper code based on the flags

License

Notifications You must be signed in to change notification settings

byjg/php-featureflag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FeatureFlag Dispatcher

Sponsor Build Status Opensource ByJG GitHub source GitHub license GitHub release

A simple feature flag dispatcher that allows conditional code execution based on enabled feature flags.

Feature flags are a powerful technique for managing features in your application, enabling you to toggle functionality on/off without deploying new code. This library provides a clean, interface-based approach to dispatch handlers based on feature flag states.

Basic Usage

use ByJG\FeatureFlag\FeatureFlags;
use ByJG\FeatureFlag\FeatureFlagDispatcher;
use ByJG\FeatureFlag\FeatureFlagSelector;
use ByJG\FeatureFlag\FeatureFlagHandlerInterface;

// Initialize the enabled features
FeatureFlags::addFlag('flag1', 'value1');
FeatureFlags::addFlag('flag2', 'value2');
FeatureFlags::addFlag('flag3');

// Create handler implementations
class MyHandler implements FeatureFlagHandlerInterface
{
    public function execute(mixed ...$args): mixed
    {
        echo "Handler executed!\n";
        return null;
    }
}

// Create a Dispatcher
$dispatcher = new FeatureFlagDispatcher();

// Add feature flag handlers
$dispatcher->add(FeatureFlagSelector::whenFlagIs('flag2', 'value1', new MyHandler()));
$dispatcher->add(FeatureFlagSelector::whenFlagIs('flag2', 'value2', new MyHandler()));

// Dispatch the request
$dispatcher->dispatch();

// Since there is a feature flag 'flag2' with value 'value2', the corresponding handler will be executed

:::note If one or more feature flags match the condition, all matching handlers will be executed in the order they were added. :::

Handler Types

  • Handler Interface - Create custom handlers implementing FeatureFlagHandlerInterface
  • Attributes - Use PHP 8 attributes to mark methods as handlers

Selector Types

Advanced Usage

Install

composer require "byjg/featureflag"

Requirements

  • PHP 8.3 to 8.5
  • PSR-11 Container (optional, for container integration)

Unit tests

composer test

Dependencies

flowchart TD
    byjg/featureflag --> php8.3-8.5
    byjg/featureflag --> psr/container
Loading

Open source ByJG

About

Allows you to enable or disable features in your application and dispatch the proper code based on the flags

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 2

  •  
  •  

Languages