phoenixrvd/bitmask

bitmask 工具包

安装: 16

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:工具

1.0.2 2018-06-21 22:59 UTC

This package is auto-updated.

Last update: 2024-09-12 05:28:53 UTC


README

Minimum PHP Version Latest Stable Version composer.lock License

Build Status Code Climate StyleCI Test Coverage BCH compliance Latest Unstable Version

在 PHP 中,一个数字通常是 4 字节长。这意味着一个数字实际上使用了 32 位内部存储。

在这种情况下,32 个布尔值可以存储为单个整数。问题是“魔数”。

安装

使用以下命令安装最新版本:

composer require phoenixrvd/bitmask

示例

没有此 API before.php

<?php

class StateMap {
    const OPTION_1 = 1;
    const OPTION_2 = 2;
    const OPTION_4 = 4;
    // What is next ????
}

// Check for Active Feature
$activeFeatures = 6;

if(($activeFeatures & StateMap::OPTION_1) === StateMap::OPTION_1){
    // Do this
}

if(($activeFeatures & StateMap::OPTION_2) !== StateMap::OPTION_2) {
    // Do this
}

// Activation and deactivation from options ist not 'Human Readable'.

使用此 API after.php

<?php

class StateMap {
    const OPTION_1 = 0;
    const OPTION_2 = 1;
    const OPTION_4 = 2;
    const OPTION_5 = 3;
    const OPTION_6 = 4;
}

// Check for Active Feature
$activeFeatures = (new \PhoenixRVD\Bitmask\BitmaskFactory())->fromInt(6);

if($activeFeatures->isOn(StateMap::OPTION_1)){
    // Do this
}

if($activeFeatures->isOff(StateMap::OPTION_2)) {
    // Do that
}

// Activate options
$activeFeatures->on(StateMap::OPTION_5, StateMap::OPTION_6);

// Deactivate options
$activeFeatures->off(StateMap::OPTION_4, StateMap::OPTION_1);

测试

composer bitmask:test

版权和许可证

代码在 MIT 许可证 下发布。