kirchbaum/laravel-feature-toggle

此包的最新版本(dev-master)没有可用的许可信息。

Laravel PHP和JavaScript的简单功能开关

dev-master 2016-02-25 11:32 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:22 UTC


README

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

  • 按环境(例如本地、开发、测试、生产)定义功能开关。
  • 一种可管理的将标志保留在源控制中的方法,而不会变得难以管理。
  • 为每个功能创建一个默认设置,如果找不到特定环境的设置,则将使用此设置。
  • 能够轻松地请求功能的状态,并自动根据应用程序正在运行的当前环境获取正确的设置。
  • 能够将功能标记为适用于JavaScript导出。
  • 一个辅助方法,可以轻松导出适用于JavaScript的功能标志,并将它们传递给前端框架。

安装

将包添加到您的项目中

composer require kirschbaum/laravel-feature-flag

添加以下服务提供者

// 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' => [
        'environments' => [
            'default'  => false,
            'local'    => true,
            'dev'      => false,
            'stage'    => false
        ],
        'js_export'    => true,
    ],

    'feature-2' => [
        'environments'   => [
            'default'    => false,
            'production' => 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
]