researchsquare/exposure

选择性地向用户子集展示新功能。

0.0.1 2015-10-07 21:04 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:52:50 UTC


README

Research Square的Exposure库提供了基本的功能标志功能,允许您选择性地向用户子集展示新功能。这个库受到Etsy的Feature API的启发。

这个库目前处于开发的早期阶段,未来可能会有很大的变化,但我们希望保持公共API相对稳定。

目前,功能可以完全启用或禁用,为特定用户启用,或为用户的一定比例启用,从而实现新功能的逐步可用性。

无论选择哪种方法,功能检查都是通过

if (Exposure\Feature::isEnabled('feature-name')) {
    // feature specific logic.
}

安装

使用以下命令安装最新版本:

$ composer require researchsquare/exposure

集成

要在您的应用程序中使用Exposure,您需要用您想要的特性集初始化它,并设置它运行的上下文。这如何发生主要取决于您自己来解决,但特性通常在您的配置中定义,而特征及其上下文将在您的应用程序启动时初始化。

<?php

use Exposure;

// $features is an array of features.
Exposure\Feature::defineFeatures($features);

// $context is an instance of Feature\Context.
Exposure\Feature::setContext($context);

配置

已启用的功能

$configuration['feature-name'] = true;

已禁用的功能

$configuration['feature-name'] = false;

为特定用户启用的功能

$configuration['feature-name'] = array(
    Exposure\Feature::USER => array(25, 26),
);

为50%用户启用的功能

$configuration['feature-name'] = array(
    Exposure\Feature::PERCENTAGE => 50,
);

规则也可以组合。

为特定用户或50%用户启用的功能

$configuration['feature-name'] = array(
    Exposure\Feature::USER => array(25, 26),
    Exposure\Feature::PERCENTAGE => 50,
);

建立上下文

特征依赖于上下文来确定是否启用。上下文提供了有关应用程序环境的信息,例如当前用户。由于建立上下文的方法会因应用程序而异,因此由个别应用程序定义。目前,上下文提供了两段信息:当前用户的身份和桶标识。桶标识用于识别用户,无论他们是否匿名或已认证,并且在整个过程中应保持不变。这确保了特定用户的功能可用性是一致的。确保这种一致性的方法之一是将桶标识存储在cookie中,但这又是应用程序自己的任务。