abibidu/bitmask

此包已被废弃且不再维护。未建议替代包。

Bitmask类帮助您利用位掩码的全部功能,无需关心位运算操作。它代表了一个类似简单可管理的对象的高级抽象,并像集合一样表现。

v1.3 2017-03-19 19:19 UTC

This package is not auto-updated.

Last update: 2020-09-18 21:24:34 UTC


README

Build Status Code Coverage Packagist MIT License

安装

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

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

示例用法

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

use Abibidu\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