byjg/featureflag
Allows you to enable or disable features in your application and dispatch the proper code based on the flags.
Maintainers
Fund package maintenance!
Requires
- php: >=8.3 <8.6
- psr/container: ^1.0|^2.0|^3.0
Requires (Dev)
- phpunit/phpunit: ^10.5|^11.5
- vimeo/psalm: ^5.9|^6.13
Suggests
None
Provides
None
Conflicts
None
Replaces
None
Unknown License da11089447048e8ffeeea0786ded38f7a961983a
This package is auto-updated.
Last update: 2026-06-10 18:36:29 UTC
README
| sidebar_key | featureflag | |
|---|---|---|
| tags |
|
FeatureFlag Dispatcher
A simple feature flag dispatcher that allows conditional code execution based on enabled feature flags.
👁 Sponsor
👁 Build Status
👁 Opensource ByJG
👁 GitHub source
👁 GitHub license
👁 GitHub release
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
- FeatureFlagSelector - Single condition selectors
- FeatureFlagSelectorSet - Multiple condition selectors (ALL must match)
Advanced Usage
- Search Order - Control the order of handler execution
- Passing Arguments - Pass runtime arguments to handlers
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/containerLoading
