gksh/bitmask

PHP 的 bitmask 值对象

支持包维护!
karkowg

v0.0.1 2024-05-03 19:20 UTC

This package is auto-updated.

Last update: 2024-09-05 21:20:29 UTC


README

Bitmask banner

gksh/bitmask

在 PHP 中使用 bitmask 和位运算的简单方法。

Latest Version on Packagist GitHub Tests Action Status License Total Downloads

安装

需要 PHP 8.2+

composer require gksh/bitmask

🧪 使用

通过 bitmask 将布尔选项编码为简单的整数,以简化标志处理。

请参阅 ide.php 以获取完整示例和更多内容,请参阅 playground

enum Panel: int
{
    case Project = 1;
    case Terminal = 2;
    case SourceControl = 4;
    case Extensions = 8;
}

class Panels extends TinyBitmask
{
    public function isVisible(Panel $panel): bool
    {
        return $this->has($panel->value);
    }

    public function togglePanel(Panel $panel): Panels
    {
        return $this->toggle($panel->value);
    }
}

class Ide
{
    public Panels $panels;

    public function togglePanel(Panel $panel): self
    {
        $this->panels->togglePanel($panel);

        return $this;
    }
}

$ide = (new Ide())
    ->togglePanel(Panel::Project)
    ->togglePanel(Panel::Terminal);

$ide->panels->isVisible(Panel::Terminal); // true
$ide->panels->isVisible(Panel::Extensions); // false

测试

composer test

变更日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。