flagception/contentful-activator

Contentful 的功能开关管理激活器

1.0.0 2018-01-13 23:04 UTC

This package is auto-updated.

Last update: 2024-08-25 22:27:01 UTC


README

使用 FlagceptionContentful 管理功能标志!

Latest Stable Version Coverage Status Build Status Total Downloads License

SensioLabsInsight

下载库

打开命令行,进入您的项目目录,并执行以下命令以下载此库的最新稳定版本

$ composer require flagception/contentful-activator

用法

只需创建一个新的 ContentfulActivator 实例并将其提交到您的功能管理器

// YourClass.php

class YourClass
{
    public function run()
    {
        // We need two arguments:
        //  1. A contentful client
        //  2. The content type name in contentful
        $activator = new ContentfulActivator($this->client, 'FeatureToggle');
        
        $manager = new FeatureManager($activator);
        if ($manager->isActive('your_feature_name')) {
            // do something
        }
    }
}

ContentfulActivator 需要三个参数

  • contentful 客户端 的实例
  • contentful 模型类型 id,作为字符串
  • 字段映射作为数组 ('name' 和 'state') - 可选(默认值已设置)

如果您的 contentful 模型看起来像这样 ...

{
  "name": "Feature Management",
  "description": "Features verwalten",
  "displayField": "featureName",
  "fields": [
    {
      "id": "featureName",
      "name": "Feature",
      "type": "Text",
      "localized": false,
      "required": true,
      "validations": [],
      "disabled": false,
      "omitted": false
    },
    {
      "id": "isActive",
      "name": "Aktiv",
      "type": "Boolean",
      "localized": false,
      "required": true,
      "validations": [],
      "disabled": false,
      "omitted": false
    }
  ],
  "sys": {
    "space": {
      "sys": {
        "type": "Link",
        "linkType": "Space",
        "id": "9d8smn39"
      }
    },
    "id": "myFeatureModel",
    "type": "ContentType",
    "createdAt": "2017-12-07T15:54:07.255Z",
    "updatedAt": "2018-01-11T16:08:47.283Z",
    //...
  }
}

... 那么您的激活器实例应该像这样

// YourClass.php

class YourClass
{
    public function run()
    {
        // "myFeatureModel" is the content model type
        $activator = new ContentfulActivator($this->client, 'myFeatureModel', [
            'name' => 'featureName', // Field name for feature key
            'state' => 'isActive' // Field name for feature state
        ]);
        
        $manager = new FeatureManager($activator);
        if ($manager->isActive('your_feature_name')) {
            // do something
        }
    }
}

如果您在 contentful 中使用默认字段名称,则可以跳过字段映射(如第一个示例)

  • 'state' 用于功能状态字段
  • 'name' 用于功能键字段