byjg/featureflag

There is no license information available for the latest version (dev-master) of this package.

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

Fund package maintenance!
byjg

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/byjg/featureflag

dev-master 2025-11-22 01:53 UTC

This package is auto-updated.

Last update: 2025-11-22 01:54:03 UTC


README

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

vendor/bin/phpunit

Dependencies

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

Open source ByJG