byjg / featureflag
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
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
This package is auto-updated.
Last update: 2025-11-22 01:54:03 UTC
README
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
- 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
vendor/bin/phpunit
Dependencies
flowchart TD
byjg/featureflag --> php8.3-8.5
byjg/featureflag --> psr/container
Loading