open-feature/split-provider

OpenFeature 的 Split 提供者包


README

a Latest Stable Version Total Downloads PHP 8.0+ License

概述

Split 是一个功能交付平台,它支持功能标志管理、软件实验和持续交付。此存储库和包提供了通过 OpenFeature PHP SDK 与其交互的客户端代码。

此包还基于各种 PSR(PHP 标准建议)如日志接口(PSR-3)和基本及扩展编码标准(PSR-1 和 PSR-12)。

安装

composer require open-feature/split-provider

用法

SplitProvider 客户端构造函数接受一个可选的单个参数,包含 3 个字段,它们的默认值对应于提供给 flagd 服务器默认参数

$splitConfig = [
    'cache' => [
      'adapter' => 'predis',
      'parameters' => [
        'scheme' => 'tcp',
        'host' => getenv('REDIS_HOST'),
        'port' => getenv('REDIS_PORT'),
        'timeout' => 881,
      ],
      'options' => [
        'prefix' => '',
      ],
    ],
];

$splitApiKey = getenv('SPLIT_API_KEY');

$provider = new SplitProvider($splitApiKey, $splitConfig);

有关配置选项的更多信息,请参阅 配置 的 Split PHP SDK 文档。

解析值需要使用 EvaluationContext,您可以在其中提供用于评估的 targetingKey(代表用户/账户等标识符)

$client = $api->getClient('split-example', '1.0.0');

$featureEnabled = $client->getBooleanDetails('dev.openfeature.example_flag', false, new EvaluationContext('user-id'), null);

if ($featureEnabled) {
  // do new logic here
} else {
  // do old logic here
}

您可以为解析值提供更详细属性,但值必须符合 Split SDK 的要求。有关允许的属性的信息可以在 PHP SDK 文档的 属性部分 中找到。

$client = $api->getClient('split-example', '1.0.0');

$featureEnabled = $client->getBooleanDetails('dev.openfeature.example_flag', false, new EvaluationContext('user-id', [
  'plan_type' => 'growth',
  'registered_date' => (new DateTime('now', new DateTimeZone('UTC')))->getTimestamp(),
  'deal_size' => 10000,
  'paying_customer' => True,
  'permissions' => ['gold','silver','platinum'],
]), null);

if ($featureEnabled) {
  // do new logic here
} else {
  // do old logic here
}

开发

PHP 版本

此库针对 PHP 版本 8.0 及更高版本。只要您的系统上有任何兼容版本的 PHP,您就应该能够使用 OpenFeature SDK。

此包还有一个 .tool-versions 文件,用于与 asdf 等PHP版本管理器一起使用。

安装和依赖项

使用 composer install 安装依赖项。 composer install 将使用最新兼容版本更新 composer.lock

我们重视尽可能减少运行时依赖项。添加任何依赖项都需要仔细考虑和审查。

测试

使用 composer run test 运行测试。