mfonte/bitmask

Bitmask 类帮助您使用位掩码的所有功能,无需关心位运算的具体实现。它提供了一个高级抽象,看起来简单易管理,像集合一样操作。

v1.0 2023-02-17 15:44 UTC

This package is auto-updated.

Last update: 2024-09-17 19:26:14 UTC


README

Bitmask 类帮助您使用位掩码的所有功能,无需关心位运算的具体实现。它提供了一个高级抽象,看起来简单易管理,像集合一样操作。

安装

将以下依赖添加到您的 composer.json 文件中。

{
    "require": {
        "mfonte/bitmask": "^1.0"
    }
}

示例用法

例如,我们有一个 User 类,该类可以具有不同的角色。

use Mfonte\Bit\Mask;

class User
{
    const ROLE_ADMIN = Mask::FLAG_1;
    const ROLE_MANAGER = Mask::FLAG_2;
    const ROLE_CUSTOMER = Mask::FLAG_3;

    /**
     * @var Mask
     */
    private $roles;
    
    public function __construct()
    {
        $this->roles = new Mask();
    }
    
    public function becomeAdmin()
    {
        $this->roles->add(self::ROLE_ADMIN);
    }
    
    public function isAdmin()
    {
        return $this->roles->has(self::ROLE_ADMIN);
    }
    
    ...
    
    public function isCustomer()
    {
        return $this->roles->has(self::ROLE_CUSTOMER);
    }
    
    ...
}

现在我们可以创建一个用户。

$user = new User();

$user->becomeAdmin(); // User now has admin role
$user->becomeAdmin(); // Throws MaskException because role has been already set
                      // and mask is in strict mode

$user->isAdmin(); // Returns true
$user->isCustomer(); // Returns false