jrmadsen67/mahana-bitmask

位掩码管理设置

v1.0.0 2016-09-27 06:31 UTC

This package is auto-updated.

Last update: 2024-09-08 13:39:11 UTC


README

位掩码管理设置。而不是在每张表中都有几十个标志,位掩码可以将它们减少到单个整数值。

安装

composer require jrmadsen67/mahana-bitmask

使用方法

通常我们会与MVC模型类结合使用,所以我会以这个场景为例。

MahanaBitfield是一个抽象类,因此你将为每个想要设置的设置字段创建一个简单的继承类。

这意味着如果你有一个用户表,并想在字段中存储settings,你可以创建一个类似下面的示例类

use jrmadsen67\MahanaBitfield\MahanaBitfield;

class UserSettings extends MahanaBitfield
{
    public $flags = [
        'flag1' => 0,
        'flag2' => 1,
        'flag3' => 2,
    ];
}

请注意,这并不直接与你的模型一起使用;你将不得不以正常的方式在你的框架或代码中自己获取/设置settings字段。

初始化一个类

$mbf = new UserSettings;

设置特定的标志为true/false

$mbf->flag1 = true;

获取特定的设置值

$flag1 = $mbf->flag1;

获取位掩码值

$settings = $mbf->getValue();

使用setFlags() & getFlags() 一次处理整个数组

$userSettings = new UserSettings;

$userSettings->setFlags([
    'flag2' => true,
    'flag3' => true,
]);

或者

$setting_array = $userSettings->getFlags();

/*

var_dump($setting_array);

array(
    'flag2' => true,
    'flag3' => true,
);

*/

测试可以为你提供更多示例。欢迎提问和PR!