定制 niborb/php-feature-toggle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

niborb/php-feature-toggle

Composer 安装命令:

composer require niborb/php-feature-toggle

包简介

A PHP feature toggle library

README 文档

README

A small, dependency-light feature toggle library for PHP 8.2+. Features can be toggled on/off and optionally gated behind a Symfony ExpressionLanguage expression evaluated against a runtime context.

Requirements

  • PHP ^8.2
  • symfony/expression-language ^6.4 || ^7.0

Installation

composer require niborb/php-feature-toggle

See also packagist.org/packages/niborb/php-feature-toggle.

Quick start

<?php

require 'vendor/autoload.php';

use Niborb\FeatureToggle\Entity\Feature;
use Niborb\FeatureToggle\Toggle;

$toggle = new Toggle();

$feature = (new Feature('user-interface-2.0'))->enable();
$toggle->addFeature($feature);

if ($toggle->isEnabled('user-interface-2.0')) {
    echo 'New UI enabled' . PHP_EOL;
}

Expression-based toggles

Pass a Symfony ExpressionLanguage instance to the Toggle constructor and attach an expression to a feature. The expression is evaluated against the context array passed to isEnabled().

<?php

require 'vendor/autoload.php';
require 'User.php';

use Niborb\FeatureToggle\Entity\Feature;
use Niborb\FeatureToggle\Toggle;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;

$toggle = new Toggle(
    new ExpressionLanguage(new ArrayAdapter()), // optional PSR-6 cache pool
);

$feature = (new Feature('user-interface-2.0'))
    ->enable()
    ->setExpression('user.getId() in 1000..2000');

$toggle->addFeature($feature);

foreach ([new User(3000), new User(1500)] as $user) {
    $enabled = $toggle->isEnabled('user-interface-2.0', ['user' => $user]);
    echo "User {$user->getId()} " . ($enabled ? 'can' : 'cannot') . " see new interface" . PHP_EOL;
}

Output:

User 3000 cannot see new interface
User 1500 can see new interface

More runnable examples in examples/.

Custom data providers

Toggle defaults to an in-memory ArrayDataProvider. You can plug in any implementation of Niborb\FeatureToggle\DataProvider:

$toggle = new Toggle(null, new MyDatabaseDataProvider($pdo));

Development

composer install
composer test       # PHPUnit
composer phpstan    # PHPStan (level 8)

Changelog

See CHANGELOG.md for the list of changes and the migration guide from v0.x.

License

MIT — see LICENSE.

统计信息

  • 总下载量: 528
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-10-12

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固