letflow/laravel-feature-toggle

为 Laravel PHP 和 Javascript 提供简单的功能开关

v1.0.1 2018-10-26 21:16 UTC

This package is not auto-updated.

Last update: 2024-09-23 07:24:08 UTC


README

此包允许在 Laravel 中轻松高效地进行功能标志管理。功能包括

  • 按环境定义功能开关(例如本地、开发、预发布、生产)。
  • 一种可管理的源代码控制方式,以避免变得繁琐。
  • 为每个功能创建默认设置,如果找不到特定环境的设置,则使用该设置。
  • 能够轻松请求功能的状态,并自动根据应用程序当前运行的环境获取正确的设置。
  • 能够将功能标记为适合 Javascript 导出。
  • 一个辅助方法,可以轻松导出适合 Javascript 的功能标志并将其传递给前端框架。

安装

将包添加到项目中

composer require letflow/laravel-feature-flag

如果使用的是低于 5.5 的 Laravel,请添加以下服务提供者

// config/app.php

'providers' => [
    ...
    Kirschbaum\LaravelFeatureFlag\ServiceProvider::class,
    ...
];

此包还附带了一个外观,可以轻松检索您所在环境的正确标志

// config/app.php

'aliases' => [
    ...
    'FeatureFlag' => Kirschbaum\LaravelFeatureFlag\Facades\FeatureFlag::class,
    ...
]

使用 arisan 命令发布配置文件

php artisan vendor:publish --provider="Kirschbaum\LaravelFeatureFlag\ServiceProvider"

配置看起来像这样

<?php

return [

    'feature-1' => [
        'value' => env('TOGGLE_FEATURE_1', false),
        'js_export'    => true,
    ],

    'feature-2' => [
        'cookie_override' => true,
        'js_export'      => true,
    ],

];

使用方法

通用 PHP 使用

if(FeatureFlag::isEnabled('feature-1'))
{
    // Only do stuff if feature is enabled.
}

如果您需要将功能标志传递给前端 JS 框架(如 Angular 或 Vue.js),可以通过使用 getJavascriptFlags() 方法实现

$js->put(
            [
                'pusher_public_key' => env('PUSHER_PUBLIC'),
                'feature_flags'     => FeatureFlag::getJavascriptFlags()
            ]
        );

并非所有功能标志都应该传递到前端,只有设置了 'js_export = true' 的功能才会包括在内。最终结果是包含正确标志的环境功能简单数组

array:2 [▼
  "feature-1" => true
  "feature-2" => false
]