partechgss/laravel-feature-toggle

Laravel 特性开关包装器。

v1.0.5 2020-07-23 15:49 UTC

This package is auto-updated.

Last update: 2024-09-06 23:16:57 UTC


README

此包允许您在 Laravel 中实现功能开关。目前唯一支持的实施方案是 split.io。

基本用法

根据标志更改行为

use PartechGSS\Laravel\FeatureToggle\Contracts\FeatureToggleClient;

$client = resolve(FeatureToggleClient::class);
switch ($client->getTreatment('my_flag')) {
    case "on":
        do_a_thing();
        break;

    default:
        do_another_thing();
        break;
}

检索与治疗关联的配置

$treatmentWithConfig = $client->getTreatmentWithConfig('my_flag');
$treatment = $treatmentWithConfig['treatment'];
$config = $treatmentWithConfig['config'];
set_some_css_options($config);

批量检索多个标志

$treatments = $client->getTreatments(['my_flag', 'another_flag']);
switch($treatments['my_flag']) {
    ...
}

批量检索配置

$treatmentsWithConfig = $client->getTreatmentsWithConfig('my_flag');
$treatment = $treatmentsWithConfig['my_flag']['treatment'];
$config = $treatmentsWithConfig['my_flgag']['config'];
set_some_css_options($config);

安装

您可以通过 Composer 安装此包

composer require partechgss/laravel-feature-toggles

配置

配置文件

查找 config/feature-toggle.php。要安装默认配置

php artisan vendor:publish

中间件

您需要将切换 "key" 设置在某个地方。这通常是用户邮箱地址之类的信息,用于决定用户为特定标志获得哪种治疗。此包提供中间件,可以自动根据用户的电子邮件地址设置键。这必须在您的认证中间件之后运行,因此,首先将其作为路由中间件提供,并在您的 app/Http/Kernel.php 中设置优先级。

use PartechGSS\Laravel\FeatureToggle\Middleware\SetFeatureToggleKeyFromUserEmail;
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'feature-toggle' => SetFeatureToggleKeyFromUserEmail::class,
];
protected $middlewarePriority = [
    \App\Http\Middleware\Authenticate::class,
    SetFeatureToggleKeyFromUserEmail::class,
];

作为路由中间件执行

# routes/api.php
Route::middleware(['auth:api', 'feature-toggle'])->group(function() {
    ...,
});

通过路由中间件组执行

# app/Http/Kernel.php
protected $middlewareGroups = [
    'web' => [
        ...,
        'feature-toggle',
    ],

    'api' => [
        \Barryvdh\Cors\HandleCors::class,
        'throttle:60,1',
        'bindings',
        'feature-toggle',
    ],
];

测试

本项目

composer test

您的项目

SplitIO SDK 在本地模式找不到配置文件时会抛出错误。为了解决这个问题,创建一个模拟的本地 split.yaml 文件,并让工厂加载它。例如,您可以将测试环境中的 SPLITIO_SPLIT_FILE 设置为指向您的文件

# .env.testing
SPLITIO_SPLIT_FILE=tests/__data__/split.yaml

这假设在 tests/__data__/split.yaml 有一个类似这样的文件

- hello_world:
  treatment: off
- hello_world:
  treatment: on
  keys: "user@example.org"