roboticsexpert / feature-flag
轻松将功能标志功能添加到您的laravel应用程序
v1.0.3
2022-01-23 10:26 UTC
This package is not auto-updated.
Last update: 2024-09-22 03:12:22 UTC
README
尽可能简单地将功能标志功能引入您的项目
如果您想了解什么是功能标志,请查看Martin Fowler关于此主题的文章:https://martinfowler.com.cn/articles/feature-toggles.html
安装
composer require roboticsexpert/feature-flag
安装composer包后,如果您使用自动发现服务提供者,则一切正常,但如果您阻止了这一点,只需将此行添加到config/app.php
中的providers
部分即可
Roboticsexpert\FeatureFlag\FeatureFlagServiceProvider::class
之后,您应该运行
php artisan migrate
用法
您可以使用此项目,使用两种策略:外观或依赖注入!
我建议您使用依赖注入以利用IDE自动完成功能,但请按您的喜好使用它!
外观
您可以通过以下方式获取功能标志服务:
use Roboticsexpert\FeatureFlag\FeatureFlagFacade as FeatureFlag; FeatureFlag::getTypes()
依赖注入
您可以通过以下方式获取功能标志服务:
use Roboticsexpert\FeatureFlag\Services\FeatureFlagService; $featureFlag=app(\Roboticsexpert\FeatureFlag\Services\FeatureFlagService::class); //or you can get this service from input of controller method $featureFlag->getTypes();
方法
创建功能标志
$featureFlagModel=$featureFlagService->createFeatureFlag('FEATURE_NAME'); dd($featureFlagModel->name);
更改功能标志的类型(管理员)
//OPTIONS: DISABLED , PRIVATE , PUBLIC $featureFlagModel=$featureFlagService->changeFeatureFlagType('FEATURE_NAME','DISABLED'); //or $featureFlagModel=$featureFlagService->changeFeatureFlagType('FEATURE_NAME',\Roboticsexpert\FeatureFlag\Models\FeatureFlag::TYPE_DISABLED);
删除功能标志(管理员)
$featureFlagService->destroyFeatureFlag('FEATURE_1');
获取所有功能标志(管理员)
$featureFlags=$featureFlagService->getAllFeatureFlags();
将用户添加到或从功能标志中分离
$featureFlagService->attachUserToFeatureFlag(1,'FEATURE_1'); $featureFlagService->detachUserToFeatureFlag(1,'FEATURE_1');
获取用户或公开用户的未激活功能列表
首先,应该解释为什么应该使用禁用功能而不是启用功能!
- 当一个功能对所有用户公开时,我们应该通知所有客户端该功能是启用的,直到客户端更新,但旧客户端需要永远拥有该功能!!!
- 如果您返回启用功能,您的功能列表会变得越来越大!
最终,我更喜欢实现禁用功能,并且您应该向客户端返回此列表!
//It will return array of names of features (string) //No input for not logged in users $featureFlagService->getDisabledFeatureFlagsName(); //User identifier for logged in users $featureFlags=$featureFlagService->getDisabledFeatureFlagsName(1);