byjg / featureflag
There is no license information available for the latest version (6.0.0) 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!
6.0.0
2025-11-26 03:10 UTC
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: 2026-03-10 17:58:17 UTC
README
| sidebar_key | tags | |
|---|---|---|
| featureflag |
|
FeatureFlag Dispatcher
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
composer test
Dependencies
flowchart TD
byjg/featureflag --> php8.3-8.5
byjg/featureflag --> psr/container
Loading