open-feature / split-provider
OpenFeature 的 Split 提供者包
1.0.0
2024-09-04 03:15 UTC
Requires
- php: ^8
- open-feature/sdk: ^2.0
- splitsoftware/split-sdk-php: ^7.1
Requires (Dev)
- ergebnis/composer-normalize: ^2.25
- friendsofphp/php-cs-fixer: ^3.13
- hamcrest/hamcrest-php: ^2.0
- mdwheele/zalgo: ^0.3.1
- mikey179/vfsstream: v1.6.11
- mockery/mockery: ^1.5
- 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
- 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
概述
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
运行测试。