PHP code example of yaroslavche / bitmask

1. Go to this page and download the library: Download yaroslavche/bitmask library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yaroslavche / bitmask example snippets


$mask &= ~EXECUTE;
$mask |= READ | WRITE;

use BitMask\BitMask;

define('READ', 1 << 0);
define('WRITE', 1 << 1);
define('EXECUTE', 1 << 2);

$bitmask = new BitMask(READ | WRITE);

$bitmask->set(EXECUTE);
$bitmask->remove(WRITE);

if ($bitmask->has(READ)) {
// ...
}

echo $bitmask->get(); // 5

use BitMask\EnumBitMask;

enum Permissions
{
    case READ;
    case WRITE;
    case EXECUTE;
}

$mask = new EnumBitMask(Permissions::class);

$mask->set(Permissions::READ);
$mask->set(Permissions::EXECUTE);

$mask->has(Permissions::WRITE); // false
$mask->get(); // 5

enum Flags: int
{
    case User  = 1;   // 0b0001
    case Admin = 8;   // 0b1000
}

$mask = new EnumBitMask(Flags::class, Flags::User | Flags::Admin);
$mask->get(); // 9

EnumBitMask::create(Permissions::class, Permissions::READ, Permissions::EXECUTE);
EnumBitMask::all(Permissions::class);
EnumBitMask::none(Permissions::class);
EnumBitMask::without(Permissions::class, Permissions::EXECUTE);

use BitMask\Util\Bits;

Bits::getMostSignificantBit(7); // 2
Bits::getSetBitsIndexes(7);     // [0, 1, 2]
Bits::getSetBits(7);            // [1, 2, 4]
Bits::toString(7);              // "111"
Bits::isSingleBit(8);           // true