axetools/bitflagtrait

PHP trait,用于启用标志的位比较

v2.0.0 2024-09-13 22:47 UTC

This package is auto-updated.

Last update: 2024-09-13 22:52:02 UTC


README

这是一个PHP类特质,它将提供执行简单位操作的方法。

Source Code PHP Programming Language Read License Build Status

本项目使用语义版本控制

位运算符允许对整数值中的特定位进行操作和检查。

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整数可用的标志数量不同。