分桶方法decide

云眼About 5 min

分桶方法decide

本主题概述了 PHP SDK 的 decide 方法,这些方法可用于在云眼灰度发布(特性标帜)AB实验中为用户返回标帜判定。

使用 Decide 方法返回用户的标帜决策。标帜决策包括标帜启用/禁用状态和标帜变体。

本页介绍以下决策方法:

决定

版本

SDK 3.7 及更高版本

描述

返回用户的标帜键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标帜规则所需的所有数据。

Decide 是 UserContext 对象的一种方法。有关详细信息,请参阅 EyeofcloudUserContext

有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision

参数

下表描述了 Decide 方法的参数:

参数类型描述
key字符串灰度发布(特性标帜)的键
decideOptions (optional)数组EyeofcloudDecideOption枚举的数组。请参阅下表。

云眼分桶结果 EyeofcloudDecision选项

下面的示例演示如何在任何 Decide 方法上单独设置选项,或在实例化 Eyeofcloud 客户端时将其设置为全局默认值。

PHP

use Eyeofcloud\Eyeofcloud; 
use Eyeofcloud\Decide\EyeofcloudDecideOption; 
$eyeofcloud_client = new Eyeofcloud(null, null, null, null, null, null, null, null, "<YOUR_SDK_KEY>", [EyeofcloudDecideOption::DISABLE_DECISION_EVENT]); 
$user = $eyeofcloud_client->createUserContext("test_user"); 
$decision_result_map = $user->decideAll([EyeofcloudDecideOption::ENABLED_FLAGS_ONLY, EyeofcloudDecideOption::IGNORE_USER_PROFILE_SERVICE]);

下表显示了可以在“决定方法”上设置的选项的详细信息。

云眼分桶结果 EyeofcloudDecision选项枚举如果设置:
禁用决策事件防止访问者在仍获得变体的同时触发展示open in new window,这将禁止在 Eyeofcloud 应用程序的“结果”页面上open in new window显示 Decide 方法的结果。
此设置可能是为什么决策事件调度枚举在返回的 falseEyeofcloudDecisionopen in new window 对象或 DECIDE 通知侦听器有效负载。
enabledFlagsOnly仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,则忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。
ignoreUserProfileService设置后,SDK 会绕过 UPS(查找和保存)进行决策。
如果未设置此选项,UPS 将覆盖受众定位、流量分配和实验互斥组。
includeReasons在 EyeofcloudDecision 对象的 Reasons 字段中返回日志消息。请注意,与 info 或 debug 消息不同,无论此设置如何,始终返回严重错误消息。
excludeReasons从决策结果中排除标志变量值。使用此选项可通过跳过大型 JSON 变量来最大程度地减少返回的决策。

返回

Decide 方法返回一个 EyeofcloudDecision 对象。有关详细信息,请参阅 EyeofcloudDecision

如果方法遇到严重错误(SDK 未就绪、标志键无效等),则它会返回一个带有 null Variation Key 字段的决策,并使用错误消息填充 Reasons 字段(无论 Include Reasons 选项如何)。

决策示例

下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:

PHP

// create the user and decide which flag rule & variation they bucket into  
$user = $Eyeofcloud->createUserContext('user123', ['logged_in' => true]); 
$decision = $user->decide('product_sort');  

// variation. if null, decision fail with a critical error 
$variationKey = $decision->getVariationKey();  

// flag enabled state: 
$enabled = $decision->getEnabled();  

// String variable value: 
$value = (string) $decision->getVariables()['logged_in'];  

// all variable values 
$allVarValues = $decision->getVariables();  

// flag decision reasons 
$reasons = $decision->getReasons();  

// user for which the decision was made 
$userContext = $decision->getUserContext();

副作用

如果启用了通知侦听器,则调用此侦听器DECISION

决定一切


返回用户的所有活动(未存档)标志的决策。

有关详细信息,请参阅 EyeofcloudDecision

版本

SDK v3.6.1 及更高版本

描述

使用 Decide All 方法可返回用户的标志决策映射。

参数

下表描述了 Decide All 方法的参数:

参数类型描述
选项(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOption

返回

Decide All 方法返回 EyeofcloudDecision 对象的映射。有关详细信息,请参阅 EyeofcloudDecision

如果该方法在所有标志上都失败(例如,SDK 未准备就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。

例子

下面是使用 Decide All 调用获取用户标志的示例:

PHP

// make decisions for all active (unarchived) flags in the project for a user 
$decisions = $user->decideAll(); 
// or only for enabled flags 
$decisions = $user->decideAll(['ENABLED_FLAGS_ONLY']);  

$flagKeys = array_keys($decisions); 
$flagDecisions = array_map(         
    function($decision) { return $decision; },         
    $decisions 
); 
$decisionForFlag1 = $decisions['flag_1'];

副作用

如果启用了每个决策的通知侦听器,则调用此侦听器DECISION

决定密钥


在 PHP SDK 中,Decide For Keys 方法为用户做出指定标志键的决策

版本

SDK v3.6 及更高版本

描述

获取标志键数组的标志决策图。

参数

下表描述了 Decide 方法的参数:

下表描述了 Decide For Keys 方法的参数:

参数类型描述
Key数组字符串标志键数组。
选项(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOption

返回

返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision

如果该方法在所有标志上都失败(例如,SDK 未准备就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。

以下是获取用户指定标志的示例:

PHP

// make a decisions for specific enabled  flags 
$options = ['ENABLED_FLAGS_ONLY']; 
$decisions = $user->decideForKeys(['flag_1', 'flag_2'], $options);  

$decisionForFlag1 = $decisions['flag_1']; 
$decisionForFlag2 = $decisions['flag_2'];

副作用

如果启用了每个决策的DECISION通知侦听器,则调用此侦听器

Last update:
Contributors: zhangweixue,“zhangweixue”