mdeschermeier / bitflags
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()
无
手动设置所有启用/禁用标志的整数值。