下面的系统如何调用?在以下情况下实现解码功能的简单算法是什么?
想象一下,我们有一个具有以下值的权限系统。每个权限节点都会获得一个具有以下规则的数字:
为了澄清:我将许可本身称为权限,为其分配的编号称为值。另外,我将所有值的总和称为级别。
当我想给用户三个权限 READ , CREATE 和 UPDATE 时,他的权限为7。我可以肯定地说这7位用户具有这3个角色。
我的问题是:该系统如何命名,什么情况下可以计算得出,这意味着:如何有效地找出7由1、2和4组成,或者a 13级是由1、4和8构成的吗?我完全不知道从哪里开始。
答案 0 :(得分:2)
这称为位图或位掩码。当用于存储权限时,它称为权限掩码。
要测试是否设置了特定值,可以使用按位运算符。
$mask = 7;
$perms = array();
if ($mask & READ) {
$perms[] = "READ";
}
if ($mask & CREATE) {
$perms[] = "CREATE";
}
if ($mask & UPDATE) {
$perms[] = "UPDATE";
}
if ($mask & DELETE) {
$perms[] = "DELETE";
}
echo "Permissions are: " . implode(", ", $perms); // prints READ, CREATE, UPDATE