rodeob / flags
Flags manager
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-04-09 20:03:19 UTC
README
PHP class and trait for manage / set / check flags (bitwise operations). You can organize flags into groups.
Requirements
- PHP 5.5+
Installing
Flags is available through Packagist via Composer
{ "require": { "rodeob/flags": "0.*" } }
Usage
This package include class and trait to use it in yours projects.
You can use rbFlags\Flags class to extend your class in which you want to use flags.
class MyClass extends rbFlags\Flags {}
Or you use the rbFlags\traits\Flags trait in your class
class MyClass { use \rbFlags\traits\Flags; }
You can also use rbFlags\Flags class as standalone flags class.
$flags = new rbFlags\Flags(); $flags->setFlags(SOME_FLAG); if ($flags->isFlagSet(SOME_FLAG) {}
Set flags
Method
function setFlags($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)
In class:
$this->setFlags(self::SOME_FLAG);
Standalone:
$flags = new rbFlags\Flags(); $flags->setFlags(SOME_FLAG);
Check flags
Method:
function areFlagsSet($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)
and alias:
function isFlagSet($flag, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)
In class:
if ($this->areFlagsSet(self::SOME_FLAG)) {}
Standalone:
$flags = new rbFlags\Flags(); if ($flags->areFlagsSet(SOME_FLAG)) {}
If you check for multiple flags at once it checks if all flags are set
$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
Flip flags
Method:
function flipFlags($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)
In class:
$this->flipFlags(self::SOME_FLAG)
Standalone:
$flags = new rbFlags\Flags(); $flags->flipFlags(SOME_FLAG)
Unset flags
Method:
function unsetFlags($flags, $bag = FlagsClass::RBFLAGS_DEFAULT_BAG)
In class:
$this->unsetFlags(self::SOME_FLAG)
Standalone:
$flags = new rbFlags\Flags(); $flags->unsetFlags(SOME_FLAG)
Multiple flags
In all methods you can, for flags parameter, use mutiple flags at once.
$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)
Flags bag (groups)
All methods accept also flags bag parameter to organize flags into groups. If you omit this parameter default bag (group) is used.
$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')
Chaining
Methods support chaining.
$this->setFlags(self::SOME_FLAG) ->flipFlags(self::SOME_FLAG) ->unsetFlags(self::SOME_FLAG);