j4nr6n/feature-flag-bundle

功能标志

安装: 13

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

0.0.1 2024-03-21 03:25 UTC

This package is auto-updated.

Last update: 2024-09-03 04:48:21 UTC


README

安装

请确保已全局安装 Composer,如 Composer 文档中的安装章节所述。

打开命令控制台,进入您的项目目录并执行

$ composer require j4nr6n/feature-flag-bundle

不使用 Symfony Flex 的应用程序

通过将其添加到项目中 config/bundles.php 文件中注册的包列表中启用该包

// config/bundles.php

return [
    // ...
    j4nr6n\FeatureFlagBundle\FeatureFlagBundle::class => ['all' => true],
];

使用该包

投票者是一种隔离特定功能代码的简单方法,但也可以用于对多个功能进行“投票”。

// src/FeatureFlag/MyFeatureVoter.php

// ...
use j4nr6n\FeatureFlagBundle\FeatureVoterInterface;

class MyFeatureVoter implements FeatureVoterInterface
{
    public function supports(string $featureFlag): bool
    {
        return $featureFlag === 'my_new_feature';
    }

    public function isEnabled(string $featureFlag, array $context = []): bool
    {
        // ...
    }
}

您可以创建任意数量的功能投票者。但请记住,如果任何单个注册的投票者返回 true,最终结果将是 true

在控制器中

// src/Controller/DefaultController.php

// ...
use j4nr6n\FeatureFlagBundle\FeatureCheckerInterface;

class DefaultController extends AbstractController
{
    // ...
    
    #[Route(name: 'app_default_homepage', methods: [Request::METHOD_GET])]
    public function homepage(FeatureCheckerInterface $featureChecker): Response
    {
        return $featureChecker->isEnabled('new_homepage', ['user' => $this->getUser()])
            ? $this->render('default/new_homepage.html.twig')
            : $this->render('default/homepage.html.twig');
    }
}

在服务中

// src/Service/SomeService.php

// ...
use j4nr6n/FeatureFlagBundle\FEatureCheckerInterface;

class SomeService
{
    public function __construct(
        private readonly FeatureCheckerInterface $featureChecker
    ) {
    }
    
    public function someMethod() {
        return $this->featureChecker->isEnabled('new_feature')
            ? // Let them experience our greatness!
            : // Not yet...
    }
}

在 Twig 中

{% include feature_is_enabled('fancy_widget')
    ? '_fancy_widget.html.twig'
    : '_plain_widget.html.twig'
%}

功能检查器

如果功能投票者不起作用,您还可以创建自己的功能“检查器”。有关更多信息,请参阅Feature Checker 文档。