rodeob / flags
v0.1.2
2016-05-19 08:34 UTC
Requires
- php: >=5.5
Requires (Dev)
- jakub-onderka/php-parallel-lint: 0.*
- phpmd/phpmd: 2.*
- phpunit/phpunit: 4.*
- sebastian/phpcpd: 2.0.4
- squizlabs/php_codesniffer: 2.*
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);