yaroslavche/bitmask
Composer 安装命令:
composer require yaroslavche/bitmask
包简介
BitMask, EnumBitMask
README 文档
README
BitMask
Lightweight PHP library for working with bitmask values with support for PHP enums.
- Zero dependencies
- PHP ≥ 8.1
- Enum-friendly
- Strict validation (single-bit guarantees)
Installation
composer require yaroslavche/bitmask
Why BitMask?
Classic bitmask operations are simple but quickly become error-prone and hard to read:
$mask &= ~EXECUTE; $mask |= READ | WRITE;
BitMask provides a small, explicit API and optional enum-based safety without hiding how bitmasks actually work.
Basic Usage
use BitMask\BitMask; define('READ', 1 << 0); define('WRITE', 1 << 1); define('EXECUTE', 1 << 2); $bitmask = new BitMask(READ | WRITE); $bitmask->set(EXECUTE); $bitmask->remove(WRITE); if ($bitmask->has(READ)) { // ... } echo $bitmask->get(); // 5
EnumBitMask (recommended)
Work with bitmasks using PHP enums.
Unit enums (auto-mapped)
use BitMask\EnumBitMask; enum Permissions { case READ; case WRITE; case EXECUTE; } $mask = new EnumBitMask(Permissions::class); $mask->set(Permissions::READ); $mask->set(Permissions::EXECUTE); $mask->has(Permissions::WRITE); // false $mask->get(); // 5
Enum cases are mapped automatically based on their position:
READ → 1, WRITE → 2, EXECUTE → 4.
Int-backed enums
enum Flags: int { case User = 1; // 0b0001 case Admin = 8; // 0b1000 } $mask = new EnumBitMask(Flags::class, Flags::User | Flags::Admin); $mask->get(); // 9
Each enum value must represent a single bit.
Otherwise, an InvalidEnumException will be thrown.
Factory Methods
EnumBitMask::create(Permissions::class, Permissions::READ, Permissions::EXECUTE); EnumBitMask::all(Permissions::class); EnumBitMask::none(Permissions::class); EnumBitMask::without(Permissions::class, Permissions::EXECUTE);
Bits Helper
Low-level static helpers for working with integer bitmasks.
use BitMask\Util\Bits; Bits::getMostSignificantBit(7); // 2 Bits::getSetBitsIndexes(7); // [0, 1, 2] Bits::getSetBits(7); // [1, 2, 4] Bits::toString(7); // "111" Bits::isSingleBit(8); // true
Contributing
Development and contribution guidelines are described in CONTRIBUTING.md
License
This project is licensed under the MIT License - see the LICENSE file for details
yaroslavche/bitmask 适用场景与选型建议
yaroslavche/bitmask 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 57.6k 次下载、GitHub Stars 达 34, 最近一次更新时间为 2018 年 02 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「bit」 「binary」 「bitmask」 「bitwise」 「php8」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 yaroslavche/bitmask 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 yaroslavche/bitmask 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 yaroslavche/bitmask 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.
Bit I/O library
Alfabank REST API integration
Wraps bit mask number in an easily manageable object.
bit.ly URL shortener API
A bitmask value object for PHP
统计信息
- 总下载量: 57.6k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 34
- 点击次数: 29
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-02-04