强制决策方法
强制决策方法
本主题介绍 PHP SDK 的强制决策方法,可以使用这些方法强制用户进入云眼特性标帜(Feature Flag)AB实验中的特定变体。
这些方法将通过强制用户进入特定变体来帮助测试和调试客户端应用程序的各种流。
PHP SDK 将在做出任何决策之前检查强制决策。如果找到所请求标帜的匹配项,PHP SDK 会在做出正常决策之前立即返回强制决策(忽略受众条件和流量分配)。
下面介绍了 PHP SDK 将遵循的具体场景:
标记到决策
- SDK 将在给定标帜的任何决策调用开始时查找。如果为该标帜找到匹配的标帜到决策强制决策,它将返回该决定。
从实验规则到决策
- SDK 将在决策开始时查找给定实验规则(标帜键)。如果为标帜找到匹配的实验规则到决策强制决策,它将返回决策。
从交付规则到决策
- SDK 将在决策开始时查找给定的传递规则(标帜键)。如果找到匹配的传递规则到决策强制决策,它将返回该决策。
❗️
警告
在调用任何强制决策方法之前,必须将变体关联到标帜规则。
在强制决策时,PHP SDK 将像其他正常决策一样触发展示事件和通知(除非被 disableDecisionEvent 选项禁用)。
📘 注意
这些强制决策不是永久性的,将在重新初始化 EyeofcloudUserContext 时清除。
有关每种方法的更多信息,请单击下面的方法名称:
云眼分桶结果 EyeofcloudDecision上下文
.PHP
class EyeofcloudDecisionContext { private $flagKey; private $ruleKey; public function __construct($flagKey, $ruleKey); // get flag key public function getFlagKey(); // get rule key public function getRuleKey(); }
云眼强制决策
.PHP
class EyeofcloudForcedDecision { private $variationKey; public function __construct($variationKey); // get varaition key public function getVariationKey(); }
Set Forced Decision Method - setForcedDecision()
版本
3.9.0
描述
为给定的EyeofcloudDecisionContext
设置强制决策(variationKey
)。
参数
下表列出了 PHP SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 类 | EyeofcloudDecisionContext 的实例,其中包含要获取的强制决策的必需flagKey 和可选ruleKey 。 |
(必选)决定 | 结构 | EyeofcloudForcedDecision 的实例,其中包含要设置的强制variationKey 决策所需的实例。 |
返回
一个布尔值,指示是否成功完成了强制决策(variationKey
) 的设置。
例
在此处查看完整的 PHP SDK 示例。
获取强制决策方法 - getForcedDecision()
变体
3.9.0
描述
返回给定EyeofcloudDecisionContext
的强制决策 (variationKey
)。返回实例,如果没有匹配项,则返回EyeofcloudForcedDecision
null。
参数
下表列出了 PHP SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 类 | EyeofcloudDecisionContext 的实例,其中包含要获取的强制决策的必需flagKey 和可选ruleKey 。 |
返回
上下文的强制决策EyeofcloudForcedDecision
实例,如果没有匹配项,则为 null。
例
在此处查看完整的 PHP SDK 示例。
删除强制决策方法 - 删除强制决策()
变体
3.9.0
描述
删除给定EyeofcloudDecisionContext
的强制决策(variationKey
)。
参数
下表列出了 PHP SDK 的必需参数和可选参数。
|参数|类型|描述|
|所需的上下文 |类|EyeofcloudDecisionContext
的实例,其中包含要获取的强制决策的必需flagKey
和可选ruleKey
。|
返回
删除强制决策 (variationKey
) 时的成功/失败布尔状态。
例
在此处查看完整的 PHP SDK 示例。
删除所有强制决策方法 - 删除所有强制决策()
变体
3.9.0
描述
删除用户上下文的所有强制决策 (variationKey
)。
参数
下表列出了 PHP SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
没有 | 不适用 | 不适用 |
返回
成功/失败布尔状态。
例
在此处查看完整的 PHP SDK 示例。
完整代码示例
.PHP
$eyeofcloudClient = EyeofcloudFactory::createDefaultInstance($sdkKey);
$user = $eyeofcloudClient->createUserContext('test_user', $attributes);
$flagContext = new EyeofcloudDecisionContext('flag-1', null);
$flagAndABTestContext = new EyeofcloudDecisionContext('flag-1', 'ab-test-1');
$flagAndDeliveryRuleContext = new EyeofcloudDecisionContext('flag-1', 'delivery-1');
$variationAForcedDecision = new EyeofcloudForcedDecision('variation-a');
$variationBForcedDecision = new EyeofcloudForcedDecision('variation-b');
$variationOnForcedDecision = new EyeofcloudForcedDecision('on');
# set a forced decision for a flag
$success = $user->setForcedDecision($flagContext, $variationAForcedDecision);
$decision = $user->decide('flag-1');
# set a forced decision for an ab-test rule
$success = $user->setForcedDecision($flagAndABTestContext, $variationBForcedDecision);
$decision = $user->decide('flag-1');
# set a forced variation for a delivery rule
$success = $user->setForcedDecision($flagAndDeliveryRuleContext, $variationOnForcedDecision);
$decision = $user->decide('flag-1');
# get forced variations
$forcedDecision = $user->getForcedDecision($flagContext);
echo "[ForcedDecision] variationKey = {$forcedDecision}";
* * *
[
EyeofcloudUserContext
](/developer/fullstack/sdk-reference/php-sdk/eyeofcloudusercontext-php)[
Python SDK
](/developer/fullstack/sdk-reference/python-sdk/python-sdk)
Did this page help you?
Yes
No
* [Table of Contents](#)
* * * [EyeofcloudDecisionContext](#eyeofclouddecisioncontext)
* [EyeofcloudForcedDecision](#eyeofcloudforceddecision)
* [Set Forced Decision Method - setForcedDecision()](#set-forced-decision-method---setforceddecision)
* [Version](#version)
* [Description](#description)
* [Parameters](#parameters)
* [Returns](#returns)
* [Example](#example)
* [Get Forced Decision Method - getForcedDecision()](#get-forced-decision-method---getforceddecision)
* [Version](#version-1)
* [Description](#description-1)
* [Parameters](#parameters-1)
* [Returns](#returns-1)
* [Example](#example-1)
* [Remove Forced Decision Method - removeForcedDecision()](#remove-forced-decision-method---removeforceddecision)
* [Version](#version-2)
* [Description](#description-2)
* [Parameters](#parameters-2)
* [Returns](#returns-2)
* [Example](#example-2)
* [Remove All Forced Decisions Method - removeAllForcedDecisions()](#remove-all-forced-decisions-method---removeallforceddecisions)
* [Version](#version-3)
* [Description](#description-3)
* [Parameters](#parameters-3)
* [Returns](#returns-3)
* [Example](#example-3)
* [Full Code Example](#full-code-example)
* [See Also](#see-also)
创建用户上下文
=======
介绍创建用户上下文方法,该方法为云眼特性标帜(Feature Flag)AB实验中的标帜决策和事件创建用户上下文。
此方法的目的是创建用户并设置用户上下文一次,因此不必在每次做出标帜决策或跟踪事件时都指定用户。可以定义多个用户上下文。系统将用户上下文作为运行时对象返回,否则不会持久化。
版本
[](#version)
1.0.0-beta 或更高版本
描述
[](#description)
此调用为标帜决策和事件创建用户上下文。可以在 Eyeofcloud 客户端实例上成功调用此方法,甚至在完全配置实例之前也是如此。
参数
[](#parameters)
下表列出了必需参数和可选参数:
参数
类型
描述
(必选)**用户 ID**
字符串
用户的 ID。
**属性**
_可选_
Map
自定义键值字符串对的映射,指定系统用户用于受众群体定位的用户的属性。有关更多详细信息,请参阅以下部分。
受众群体属性
[](#audience-attributes)
为用户设置自定义受众群体属性,可以使用这些属性来[定位受众](/developer/fullstack/create-flag/target-audiences.html)群体。可以将字符串、数字、布尔值和 nil 作为自定义用户属性值传递。如果要根据他们使用的应用程序变体定位访问群体,还可以传入格式为[语义变体的](https://semver.org/)字符串,然后在 Eyeofcloud 应用中定义受众条件。`version`
> ### 🚧 重要
>
> 在访问群体评估期间,如果没有为给定的访问群体条件传递有效的属性值(例如,如果在受众群体条件需要布尔值时传递字符串,或者忘记传递值),则系统会跳过该条件。发生这种情况时,[SDK 日志](/developer/fullstack/sdk-reference/flutter-sdk/customize-logger-flutter)会包含警告。
返回
[](#returns)
返回一个 EyeofcloudUserContext 对象。有关详细信息,请参阅[云眼用户上下文](/developer/fullstack/sdk-reference/flutter-sdk/eyeofcloudusercontext-flutter)。
例
[](#example)
Dart
`// option 1: create a user, then set attributes var user = await flutterSDK.createUserContext("user123"); var attributes = <String, dynamic>{}; attributes["is_logged_in"] = false; attributes["app_version"] = "1.3.2"; user!.setAttributes(attributes); // option 2: pass attributes when creating the user var attributes = <String, dynamic>{}; attributes["is_logged_in"] = false; attributes["app_version"] = "1.3.2"; var eyeofcloudUserContext = await eyeofcloudClient.createUserContext("user123", attributes);`
参见
[](#see-also)
[云眼用户上下文](/developer/fullstack/sdk-reference/flutter-sdk/eyeofcloudusercontext-flutter)
源文件
[](#source-files)
包含 Flutter SDK for [Android Eyeofcloud](https://github.com/eyeofcloud/java-sdk/blob/master/core-api/src/main/java/com/eyeofcloud/ab/Eyeofcloud.java) 和 Swift 实现的语言/平台源文件.java为 [EyeofcloudClient.swift](https://github.com/eyeofcloud/swift-sdk/blob/master/Sources/Eyeofcloud/EyeofcloudClient.swift)。