featurit/featurit-sdk-php

FeaturIT 的 PHP SDK

v0.8.0 2024-09-26 11:50 UTC

This package is auto-updated.

Last update: 2024-09-26 11:52:22 UTC


README

Build Status Total Downloads Latest Stable Version License

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

https://www.featurit.com

featurit.tech@gmail.com