axetools / bitflagtrait
PHP trait,用于启用标志的位比较
v2.0.0
2024-09-13 22:47 UTC
Requires
- php: ^7.1
Requires (Dev)
- phpstan/phpstan: ^1.4
- phpunit/phpunit: *
- vimeo/psalm: ^4.30
README
这是一个PHP类特质,它将提供执行简单位操作的方法。
本项目使用语义版本控制。
位运算符允许对整数值中的特定位进行操作和检查。
BitFlagTrait提供了简单的方法来设置、获取和切换引用整数中位的状态。
这可以用于存储多个标志的状态或利用标志进行类设置
安装
首选的安装方法是使用Composer。运行以下命令安装包并将其添加到项目的composer.json
中作为需求
composer require axetools/bitflagtrait
使用
BitFlagTrait可用于任何类,并将公开几个受保护的方法,可用于对引用整数执行位检查。
示例
<?php class ShippingStatus { use AxeTools\Traits\BitFlag\BitFlagTrait; const FLAG_RECEIVED = 0b00001; // int value 1 const FLAG_QUEUED = 0b00010; // int value 2 const FLAG_SHIPPED = 0b00100; // int value 4 private $status = 0; public function __construct($status){ $this->status = $status; } public function hasShipped(){ return self::hasFlag($this->status, self::FLAG_SHIPPED); } } $orderStatus = new ShippingStatus(ShippingStatus::FLAG_RECEIVED | ShippingStatus::FLAG_QUEUED); var_dump($orderStatus->hasShipped()); // false $orderStatus = new ShippingStatus(3); var_dump($orderStatus->hasShipped()); // false $orderStatus = new ShippingStatus(7); var_dump($orderStatus->hasShipped()); // true
hasFlag()
静态方法self::hasFlag()
用于确定标志集合整数中特定标志的当前布尔值。
描述
self::hasFlag(int $flagSet, int $flag): bool
参数
- flagSet
- 包含当前标志状态的整数。
- flag
- 要检查状态的标志。
返回值
bool : 标志状态的值。
setFlag()
静态方法self::setFlag()
用于设置标志集合整数中特定标志的当前布尔值。
描述
self::setFlag(int &$flagSet, int $flag, bool $value): void
参数
- flagSet
- 包含当前标志状态的整数。通过引用传递,并将更新整数
- flag
- 要设置的标志值。
- value
- 要设置的标志位置在标志状态整数中的布尔值。
返回值
void
toggleFlag()
静态方法self::toggleFlag()
用于切换标志集合整数中特定标志的当前布尔值到其相反数。
描述
self::toggleFlag(int &$flagSet, int $flag): void
参数
- flagSet
- 包含当前标志状态的整数。通过引用传递,并将更新整数
- flag
- 要设置的标志值。
返回值
void
注意
请注意您使用的类特质所使用的存储介质和数据类型。PHP仍然在一些32位系统上部署。由于最大大小限制,SQL小整数和中整数可用的标志数量有限。有符号和无符号SQL整数可用的标志数量不同。