rodeob/flags

标志管理器

v0.1.2 2016-05-19 08:34 UTC

This package is not auto-updated.

Last update: 2024-09-24 22:01:41 UTC


README

PHP类和特性,用于管理/设置/检查标志(位运算)。您可以按组组织标志。

要求

  • PHP 5.5+

安装

Flags可以通过Packagist和Composer使用

{
    "require": {
        "rodeob/flags": "0.*"
    }
}

用法

此包包含类和特性,您可以在您的项目中使用。

您可以使用rbFlags\Flags类来扩展您想要使用标志的类。

class MyClass extends rbFlags\Flags {}

或者,在您的类中使用rbFlags\traits\Flags特性

class MyClass
{
    use \rbFlags\traits\Flags;
}

您还可以将rbFlags\Flags类作为独立的标志类使用。

$flags = new rbFlags\Flags();
$flags->setFlags(SOME_FLAG);
if ($flags->isFlagSet(SOME_FLAG) {}

设置标志

方法

function setFlags($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)

在类中

$this->setFlags(self::SOME_FLAG);

独立

$flags = new rbFlags\Flags();
$flags->setFlags(SOME_FLAG);

检查标志

方法

function areFlagsSet($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)

和别名

function isFlagSet($flag, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)

在类中

if ($this->areFlagsSet(self::SOME_FLAG)) {}

独立

$flags = new rbFlags\Flags();
if ($flags->areFlagsSet(SOME_FLAG)) {}

如果您一次检查多个标志,则检查所有标志是否已设置

$this->setFlags(self::SOME_FLAG | self::SOME_OTHER_FLAG1);
if ($this->areFlagsSet(self::SOME_FLAG | self::SOME_OTHER_FLAG1)) {} // true
if ($this->areFlagsSet(self::SOME_FLAG | self::SOME_OTHER_FLAG2)) {} // false

翻转标志

方法

function flipFlags($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)

在类中

$this->flipFlags(self::SOME_FLAG)

独立

$flags = new rbFlags\Flags();
$flags->flipFlags(SOME_FLAG)

取消设置标志

方法

function unsetFlags($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)

在类中

$this->unsetFlags(self::SOME_FLAG)

独立

$flags = new rbFlags\Flags();
$flags->unsetFlags(SOME_FLAG)

多个标志

在所有方法中,您都可以一次使用多个标志作为标志参数。

$this->setFlags(self::SOME_FLAG | self::SOME_OTHER_FLAG);
if ($this->areFlagsSet(self::SOME_FLAG | self::SOME_OTHER_FLAG)) {}
$this->flipFlags(self::SOME_FLAG | self::SOME_OTHER_FLAG)
$this->unsetFlags(self::SOME_FLAG | self::SOME_OTHER_FLAG)

标志包(组)

所有方法还接受标志包参数来组织标志分组。如果您省略此参数,则使用默认包(组)。

$this->setFlags(self::SOME_FLAG, 'bagName');
if ($this->areFlagsSet(self::SOME_FLAG, 'bagName')) {}
$this->flipFlags(self::SOME_FLAG, 'bagName')
$this->unsetFlags(self::SOME_FLAG, 'bagName')

链式调用

方法支持链式调用。

$this->setFlags(self::SOME_FLAG)
    ->flipFlags(self::SOME_FLAG)
    ->unsetFlags(self::SOME_FLAG);