featurit / featurit-sdk-php
FeaturIT 的 PHP SDK
v0.8.0
2024-09-26 11:50 UTC
Requires
- php: ^8.0.2
- ext-json: *
- laminas/laminas-serializer: ^2.14
- lastguest/murmurhash: ^2.1
- php-http/client-common: ^2.3
- php-http/discovery: ^1.12
- psr/http-client: ^1.0
- psr/http-client-implementation: ^1.0
- psr/http-factory: ^1.0
- psr/http-factory-implementation: ^1.0
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
- psr/simple-cache-implementation: ^1.0 || ^2.0 || ^3.0
- symfony/cache: ^5.0 | ^6.0 | ^7.0
Requires (Dev)
- fakerphp/faker: ^1.21
- laminas/laminas-diactoros: ^2.4
- php-http/curl-client: ^2.1
- php-http/mock-client: ^1.5
- phpunit/phpunit: ^9
- symfony/http-client: ^5.0 | ^6.0 | ^7.0
- symfony/var-dumper: ^5.1
README
FeaturIT 功能标志管理平台的 PHP 客户端。
描述
此包旨在简化在 PHP 项目中集成 FeaturIT API。
入门
依赖项
- PHP >= 8.0
- psr/http-client-implementation
- psr/simple-cache-implementation
安装
composer require featurit/featurit-sdk-php
如果没有提供 psr/http-client-implementation 的包,请访问 https://packagist.org.cn/providers/psr/http-client-implementation 并选择更适合您项目的包。
如果没有提供 psr/simple-cache-implementation 的包,请访问 https://packagist.org.cn/providers/psr/simple-cache-implementation 并选择更适合您项目的包。
基本用法
$featurit = new \Featurit\Client\Featurit(
'my-tenant-subdomain',
'my-environment-key'
);
$isFeatureFlagActive = $featurit->isActive('MY_FEATURE_NAME');
if ($isFeatureFlagActive) {
my_feature_code();
}
分段用法
当您想要根据某些属性向用户展示不同版本的功能时,这很有用。
$featurit = new \Featurit\Client\Featurit(
'my-tenant-subdomain',
'my-environment-key'
);
$userContext = new \Featurit\Client\Modules\Segmentation\DefaultFeaturitUserContext(
"1234",
"123af503",
"192.168.1.1",
[
"role" => "ADMIN",
"email" => "featurit.tech@gmail.com",
]
);
$featurit->setUserContext($userContext);
$isFeatureFlagActive = $featurit->isActive('MY_FEATURE_NAME');
if ($isFeatureFlagActive) {
$featureVersion = $featurit->version('MY_FEATURE_NAME');
if ($featureVersion == 'v1') {
my_feature_v1_code();
} else if ($featureVersion == 'v2') {
my_feature_v2_code();
}
}
创建 UserContextProvider
在某些情况下,您希望在检查功能标志时只填充一次 UserContext 数据。
如果是这种情况,您可以实现自己的 UserContextProvider 并将其传递给 Featurit 客户端构造函数(我们建议使用我们的构建器来创建新的 Featurit 客户端)。
class MyFeaturitUserContextProvider implements FeaturitUserContextProvider
public function getContext(): FeaturitUserContext
{
$contextData = get_my_context_data();
return new DefaultFeaturitUserContext(
$contextData['userId'],
$contextData['sessionId'],
$contextData['ipAddress'],
[
"role" => $contextData['role'],
...
]
);
}
}
作者
FeaturIT