mdeschermeier/bitflags

dev-master 2017-07-25 23:19 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:49:51 UTC


README

一个小类,用于将布尔标志压缩成一个整数。

一般信息

安装

Composer

在您的项目中启动此功能的最简单方法。

composer require mdeschermeier\bitflags

...完成!

手动安装

也非常简单。只需将位于 src 目录中的文件(只有一个文件)放置在您想要的位置,并在要包含此类的文件中添加以下行

require_once "path/to/where/you/put/BitFlags.php";

命名空间

别忘了使用命名空间!

use mdeschermeier\bitflags\BitFlags;

联系我

最佳联系我的方式是问题跟踪器(如果有问题的话)。如果没有问题,但需要更多信息或有问题,请随时通过miked.github@gmail.com给我发邮件。

重要!

虽然这个类基本上是设置它并忘记它,但我发现了一个可能引起一些问题的陷阱。

顺序很重要:这个类使用关联数组来允许您通过名称引用您设置的标志。为了使它正常工作,每个标志都按处理的顺序分配一个位位置 - 这意味着如果您使用这个类生成一个数字,将其存储在数据库中,然后稍后尝试使用该存储的值再次实例化该类,您的数组需要与最初匹配,否则您的数字将不准确。

例如:

 $Arr1 = ['Flag_1' => true, 'Flag_2' => false, 'Flag_3' => true];
 $Arr2 = ['Flag_2' => false, 'Flag_1' => true, 'Flag_3' => true];
 
 $BF1 = new BitFlags($Arr1);
 $BF2 = new BitFlags($Arr2);
 
 $intVal1 = $BF1->getCompressedFlags();
 $intVal2 = $BF2->getCompressedFlags();
 
 echo "intVal1: ".$intVal1."\n";
 echo "intVal2: ".$intVal2."\n";

输出

intVal1: 5
intVal2: 6

如果您想向标志数组中添加内容,则应该没问题 - 只要您将添加的内容追加到数组的末尾。

现在,应该注意的是,由于可以使用 setCompressedFlags() 手动设置标志的整数值,您 可以 随意更改您的数组,并只需更新值。我不是说 推荐 这样做,但嘿,我是一个 README 文档,不是警察。如果你有勇气,那就放手去做吧。

方法

构造函数

$initFlagArray - 关联数组 (可选)

初始化构造函数中传入的标志。留空或传入 null 则初始化一个空数组。如果传入构造函数的数组太大,系统无法处理(64位系统上大于63个元素,32位系统上大于31个元素),则抛出异常。

void setFlags($flagArray)

$flagArray - 关联数组

$flagArray 中指定的标志分配给位并设置位为适当的值,由 $flagArray 元素确定。如果 $flagArray 元素的个数超过系统架构允许的最大值(64位:63,32位:31),则抛出异常。

mixed getFlagPosition($flag)

$flag - 字符串

返回指定 $flag 参数的位位置。如果标志不存在,则返回 false

boolean toggleFlag($flag)

$flag - 字符串

切换与指定 $flag 参数关联的位。成功时返回 true,失败时返回 false

mixed getFlagSetting($flag)

$flag - 字符串

检索由 $flag 标识的标志位的当前存储设置。如果标志位不存在,则返回 null

void enableAllFlags()

正如其名所述:将所有分配的位翻转到 1

void disableAllFlags()

同样 也执行名称所暗示的操作:将所有分配的位翻转到 0

整数 getCompressedFlags()

返回所有启用/禁用标志的整数值。

布尔型 setCompressedFlags()

手动设置所有启用/禁用标志的整数值。