open-feature/go-feature-flag-provider

为 open-feature 的 GO 特性标志提供程序包

This package is auto-updated.

Last update: 2024-09-04 03:44:44 UTC


README

go-feature-flag logo

GO 特性标志 - OpenFeature PHP 提供程序

Packagist Version Documentation Issues Join us on slack

此存储库包含官方 PHP OpenFeature 提供程序,用于通过 GO Feature Flag 访问您的特性标志。

结合 OpenFeature SDK,您将能够在 Ruby 应用程序中评估您的特性标志。

有关 GO Feature Flag 中特性标志管理的文档,请参阅 GO Feature Flag 文档网站

功能

  • 管理 OpenFeature PHP SDK 和 GO Feature Flag 中继代理的集成。

依赖设置

Composer

composer require open-feature/go-feature-flag-provider

入门指南

初始化提供程序

GoFeatureFlagProvider 以参数形式接收一个配置对象以进行初始化。

配置对象的构造函数有以下选项

创建 GoFeatureFlagProvider 的唯一必需选项是您 GO Feature Flag 中继代理实例的 URL (endpoint)

use OpenFeature\Providers\GoFeatureFlag\config\Config;
use OpenFeature\Providers\GoFeatureFlag\GoFeatureFlagProvider;
use OpenFeature\implementation\flags\MutableEvaluationContext;
use OpenFeature\implementation\flags\Attributes;
use OpenFeature\OpenFeatureAPI;

$config = new Config('http://gofeatureflag.org', 'my-api-key');
$provider = new GoFeatureFlagProvider($config);

$api = OpenFeatureAPI::getInstance();
$api->setProvider($provider);
$client = $api->getClient();
$evaluationContext = new MutableEvaluationContext(
      "214b796a-807b-4697-b3a3-42de0ec10a37", 
      new Attributes(["email" => 'contact@gofeatureflag.org'])
  );

$value = $client->getBooleanDetails('integer_key', false, $evaluationContext);
if ($value) {
    echo "The flag is enabled";
} else {
    echo "The flag is disabled";
}

评估上下文是客户端指定 GO Feature Flag 用于评估特性标志的上下文数据的方式,它允许在标志上定义规则。

targeting_key 对于 GO Feature Flag 评估特性标志是必需的,它可以是一个用户的 ID、会话 ID 或您在评估期间认为相关的任何内容。

评估特性标志

客户端用于检索当前 EvaluationContext 的值。例如,检索特性标志 "my-flag" 的布尔值

$value = $client->getBooleanDetails('integer_key', false, $evaluationContext);
if ($value) {
  echo "The flag is enabled";
} else {
  echo "The flag is disabled";
}

GO Feature Flag 支持所有 OpenFeature 支持的特性标志类型,这意味着您可以直接使用所有访问器

// Bool
$client->getBooleanDetails('my-flag-key', false, new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));
$client->getBooleanValue('my-flag-key', false, new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));

// String
$client->getStringDetails('my-flag-key', "default", new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));
$client->getStringValue('my-flag-key', "default", new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));

// Integer
$client->getIntegerDetails('my-flag-key', 1, new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));
$client->getIntegerValue('my-flag-key', 1, new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));

// Float
$client->getFloatDetails('my-flag-key', 1.1, new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));
$client->getFloatValue('my-flag-key', 1.1, new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));

// Object
$client->getObjectDetails('my-flag-key', ["default" => true], new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));
$client->getObjectValue('my-flag-key', ["default" => true], new MutableEvaluationContext("214b796a-807b-4697-b3a3-42de0ec10a37"));

特性状态

已实现:✅ | 进行中:⚠️ | 尚未实现:❌

贡献

该项目欢迎社区贡献。如果您有兴趣贡献,请参阅 贡献者指南 以获取一些有用的提示。

PHP 版本

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

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

安装和依赖

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

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