PHP使用位运算来给参数传递多个常量

2023-10-13 08:56:23 浏览数 (1)

将多个常量通过按位或 | 操作符合并为一个整数。然后在函数中通过按位与 & 运算符检查该整数是否包含某个常量。

代码语言:javascript复制
<?php

declare (strict_types=1);


class Test
{
    const CHECK_A = 1; // 二进制 0001
    const CHECK_B = 2; // 二进制 0010
    const CHECK_C = 4; // 二进制 0100
    const CHECK_D = 8; // 二进制 1000

    public static function check(int $value, int $checkType = self::CHECK_A): bool
    {
        if ($checkType & self::CHECK_A && $value < 10) {
            return false;
        }

        if ($checkType & self::CHECK_B && $value > 100) {
            return false;
        }

        if ($checkType & self::CHECK_C && $value < 1000) {
            return false;
        }

        if ($checkType & self::CHECK_D && $value > 10000) {
            return false;
        }

        return true;
    }
}

var_dump(Test::check(101, Test::CHECK_A | Test::CHECK_B));

0 人点赞