PHPackages                             clsmedia/feature-flag - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. clsmedia/feature-flag

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

clsmedia/feature-flag
=====================

Set feature flag via .env or cookies

v1.1.0(3mo ago)0582MITPHP

Since Apr 16Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/clsmedia/feature-flag)[ Packagist](https://packagist.org/packages/clsmedia/feature-flag)[ RSS](/packages/clsmedia-feature-flag/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (4)Dependencies (2)Versions (5)Used By (0)

clsmedia\\feature-flag
======================

[](#clsmediafeature-flag)

A simple PHP package to handle feature flags via `.env` or cookies.

Installation
------------

[](#installation)

```
composer require clsmedia/feature-flag
```

Quick Start
-----------

[](#quick-start)

```
use Clsmedia\FeatureFlag\FeatureFlag;

if (FeatureFlag::isActive('new_checkout')) {
    echo 'New checkout is enabled!';
}
```

Defining Flags
--------------

[](#defining-flags)

### Via .env

[](#via-env)

```
FEATURE_FLAGS=feature1,feature2
```

### Via Cookie

[](#via-cookie)

```
setcookie('FEATURE_FLAGS', 'feature1,feature2', 0, '/');
```

> Flags can be defined in both .env and cookie simultaneously. Both sources are checked.

Basic Usage
-----------

[](#basic-usage)

```
// Check if a flag is active
FeatureFlag::isActive('feature1'); // true or false

// Check if a flag is missing (not active)
FeatureFlag::misses('feature1'); // true if not active

// Get all active flags
print_r(FeatureFlag::getFlags());
```

Default Value for Missing Flags
-------------------------------

[](#default-value-for-missing-flags)

When a flag doesn't exist, you can provide a default value:

```
// Returns true if 'nonexistent' flag is not defined
FeatureFlag::isActive('nonexistent', true); // true

// Returns false if flag not defined (default)
FeatureFlag::isActive('nonexistent'); // false
```

Time-Based Flags
----------------

[](#time-based-flags)

Enable flags only within a specific time window (UTC):

```
FEATURE_FLAGS=summer_sale|2026-06-01T00:00:00;2026-08-31T23:59:59
```

Format: `flagName|startDateTime;endDateTime`

Examples:

- `feature1|2026-01-01T00:00:00;2026-12-31T23:59:59` — active only in 2026
- `feature2` — no time restriction, always active

### How it works

[](#how-it-works)

1. If current time is outside the window → flag returns `false`
2. If current time is inside the window → checks sources normally
3. Malformed datetime suffix → flag treated as regular (no time restriction)

Flag Definition Format
----------------------

[](#flag-definition-format)

```
FEATURE_FLAGS=flag1,flag2|2026-01-01T00:00:00;2026-12-31T23:59:59,flag3

```

- `flag1` — regular flag
- `flag2` — time-based flag (active only in window)
- `flag3` — regular flag

Examples
--------

[](#examples)

See `index.php` for complete working examples including:

- Basic flag checking
- Cookie-based flags
- Time-based flags
- Default values
- Using `misses()` for inverted logic

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance80

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~371 days

Total

4

Last Release

105d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/90e846ed94f3caefd49bcc40d47f916ed0adeb00f474e3e7505148884dcd3f4c?d=identicon)[clsmedia](/maintainers/clsmedia)

---

Top Contributors

[![clsmedia](https://avatars.githubusercontent.com/u/9933752?v=4)](https://github.com/clsmedia "clsmedia (5 commits)")

---

Tags

cookieenvfeature-flagfeature-flagsfeature-togglefeature-togglesfeaturesflagsphptogglephpfeatureflagfeature toggletogglefeature flag

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/clsmedia-feature-flag/health.svg)

```
[![Health](https://phpackages.com/badges/clsmedia-feature-flag/health.svg)](https://phpackages.com/packages/clsmedia-feature-flag)
```

###  Alternatives

[opensoft/rollout

Feature switches or flags for PHP

2612.0M5](/packages/opensoft-rollout)[zumba/swivel

Strategy driven feature toggles

210140.1k5](/packages/zumba-swivel)[flagception/flagception-bundle

Feature toggle bundle on steroids.

294.1M](/packages/flagception-flagception-bundle)[francescomalatesta/laravel-feature

A simple package to manage feature flagging in a Laravel project.

211206.9k](/packages/francescomalatesta-laravel-feature)[ajgarlag/feature-flag-bundle

Provides a feature flag mechanism

1422.1k](/packages/ajgarlag-feature-flag-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
