icecave/flip

一个用于处理严格布尔值集合的小型库。

0.2.0 2015-11-19 22:21 UTC

This package is auto-updated.

Last update: 2024-09-06 11:26:38 UTC


README

The most recent stable version is 0.2.0 Current build status image Current coverage status image

Flip是一个用于处理严格布尔值集合的微型PHP库。

定义标志集

标志集描述了给定类型的可用标志。标志集通过声明一个使用FlagSetTrait特质的类来定义。

类中的每个属性定义一个命名的标志,可以设置为truefalse。所有属性都必须是私有的,并具有默认的布尔值。

use Icecave\Flip\FlagSetTrait;

final class ExampleFlags
{
    use FlagSetTrait;

    private $foo = true;
    private $bar = false;
    private $baz = false;
}

创建标志集

标志集特质提供以下静态方法,以便快速创建常见的集合

  • defaults() - 创建一个所有标志都设置为默认值的标志集
  • all() - 创建一个所有标志都设置为true的标志集
  • none() - 创建一个所有标志都设置为false的标志集

标志集也可以通过流畅接口创建和修改。下面的示例创建一个只有barbaz属性设置为true的标志集。

$flags = ExampleFlags::none()
    ->bar(true)
    ->baz(true);

省略对defaults()all()none()的初始调用是使用默认值的快捷方式。这意味着以下两个示例是等效的

$flags = ExampleFlags::defaults()
    ->foo(false)
    ->bar(true);
$flags = ExampleFlags
    ::foo(false)
    ->bar(true);

标志集是不可变的,每次调用流畅接口都会返回一个新的实例,其中包含更新的标志值。

标志不能命名为"defaults"、"all"或"none"。

使用标志集

接受标志集作为参数的函数可以使用类型提示。标志使用常规PHP属性表示法读取。保证标志值是布尔值。

function dumpFlags(ExampleFlags $flags)
{
    if ($flags->foo) {
        echo 'Foo is enabled!';
    } else {
        echo 'Foo is disabled!';
    }

    if ($flags->bar) {
        echo 'Bar is enabled!';
    } else {
        echo 'Bar is disabled!';
    }

    if ($flags->baz) {
        echo 'Baz is enabled!';
    } else {
        echo 'Baz is disabled!';
    }
}

无法使用属性表示法设置标志。

联系我们