open-feature / go-feature-flag-provider
为 open-feature 的 GO 特性标志提供程序包
Requires
- php: ^8
- guzzlehttp/guzzle: ^7.9
- open-feature/sdk: ^2.0
- psr/http-message: ^2.0
Requires (Dev)
- mockery/mockery: ^1.6
- phan/phan: ^5.4
- php-parallel-lint/php-console-highlighter: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ~1.10.0
- phpstan/phpstan-mockery: ^1.0
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^9
- psalm/plugin-mockery: ^0.11.0
- psalm/plugin-phpunit: ^0.18.0
- ramsey/coding-standard: ^2.0.3
- ramsey/composer-repl: ^1.4
- ramsey/conventional-commits: ^1.3
- roave/security-advisories: dev-latest
- spatie/phpunit-snapshot-assertions: ^4.2
- vimeo/psalm: ~4.30.0
README
GO 特性标志 - OpenFeature PHP 提供程序
此存储库包含官方 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
。
我们重视尽可能少地拥有运行时依赖项。添加任何依赖项都需要仔细考虑和审查。