功能/功能

v0.2.0 2014-02-12 20:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:08:23 UTC


README

一个简单的功能标志API,可用于切换功能。

用法

$features = new FeatureManager;

$features->setUser(new User(['id' => 1]));

$features->enable('new_calendar', function(Feature\User $user) {
    return in_array($user->id, [1, 2, 5]);
});

if ($features->can('new_calendar')) {
    // ...
}

通过添加检查当前用户属性的切换来启用功能。切换可以是简单的闭包或实现Toggle接口的任何实例。

存储

功能切换可以以三种方式定义

  • 直接PHP - 如上所述,
  • 结构化数组,
  • 或从数据库。

PHP支持闭包和数组(即不是来自YAML等),文件和数据库需要预先定义切换定义。

结构化数组

$featureToggles = [
    // Feature name
    'view_calendar' => [
        // Each toggle with it's class name and constructor arguments
        ['name' => 'Feature\Toggles\IPWhitelist', 'params' => ['127.0.0.1']],

        // or a closure
        function(Feature\User $user) {
            return $user->id % 3 == 0;
        },

        // or a Toggle instance
        new Feature\Toggles\IPWhitelist(['192.168.0.1', '192.168.0.2']),
    ]
];

$features = new FeatureManager;
$storage = new Feature\Storage\Structured($features, $featureToggles);
$storage->load();