letflow / laravel-feature-toggle
为 Laravel PHP 和 Javascript 提供简单的功能开关
v1.0.1
2018-10-26 21:16 UTC
Requires
- php: >=5.4.0
- illuminate/config: ~5.0
- illuminate/support: ~5.0
Requires (Dev)
- phpunit/phpunit: ~4.0
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
]