PHPackages                             jtrw/feature-flags - 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. jtrw/feature-flags

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

jtrw/feature-flags
==================

Feature Flags or Feature Switcher

01PHP

Since Mar 17Pushed 5y ago1 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

Feature Flags or Feature Switcher
=================================

[](#feature-flags-or-feature-switcher)

Компонент для внедрения фича флагов

Options
-------

[](#options)

### environments

[](#environments)

В `environments` указываем список сред, в анонимных функция можно будет указывать соответсвующие правила проверки для определенных environments

### repository

[](#repository)

Предпологается сделать логику истории фича флагов. Например задать правила для оповещения если определеный флаг находится слишком долго выключен или наоборот слишком долго включен.

### defaultEnvironments

[](#defaultenvironments)

Environments который будет использоватся по умолчанию

### features

[](#features)

Непосредственно все существующие влаги включенные или выключенные

Classes
-------

[](#classes)

### OptionsInterface

[](#optionsinterface)

Предпологается что на вход `Feature::init(OptionsInterface)` мы передаем класс который должен быть `OptionsInterface`В данном примере мы передаем опции в виде массива `ArrayOptions`но на практике предполокается что опции будут братся из базы или из xml, json, yml

```
$options = [
    'environments' => [
        'dev'  => static function() {
            return true;
        },
        'test' => static function() {
            return true;
        },
        'prod' => static function() {
            return true;
        }
    ],
    'repository' => new FileRepository(
        ['path' => __DIR__.'/tmp']
    ),
    'defaultEnvironments' => 'dev',
    'features' => [
        'test_feature' => true,
        'new_popup'    => true,
        'logs'         => false
    ]
];

Feature::init(new ArrayOptions($options));

if (Feature::isEnabled('test_feature')) {
    echo "test_feature";
}

if (Feature::isEnabled('new_popup')) {
    echo "new_popup";
}

if (Feature::isEnabled('logs')) {
    echo "logs";
}
```

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/cb69a84ba4d32377e911fcda345ebe671a0a98cbd748c4cf0e3cd786ee12af37?d=identicon)[nil-bora](/maintainers/nil-bora)

### Embed Badge

![Health badge](/badges/jtrw-feature-flags/health.svg)

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

###  Alternatives

[wdev-rs/laravel-analytics

Collect page view data in your application without third party tracking

151.2k](/packages/wdev-rs-laravel-analytics)

PHPackages © 2026

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