Php 反向工程位掩码以获取权限列表
我正在使用位掩码表示的权限。这些权限是Php 反向工程位掩码以获取权限列表,php,bit-manipulation,Php,Bit Manipulation,我正在使用位掩码表示的权限。这些权限是 $permissionMap = [ 'VIEW' => 1; 'CREATE' => 2; 'EDIT' => 4; 'DELETE' => 8 'UNDELETE' => 16; 'OPERATOR' => 32; 'MASTER' => 64; 'OWNER'
$permissionMap = [
'VIEW' => 1;
'CREATE' => 2;
'EDIT' => 4;
'DELETE' => 8
'UNDELETE' => 16;
'OPERATOR' => 32;
'MASTER' => 64;
'OWNER' => 128;
];
如果我组合了多个权限,比如查看
、编辑
、和删除
,以获得13的位掩码。是否可以对该整数进行反向工程,以了解用于创建该整数的权限
function getPermissions($mask, $permissionMap) {
// use $permissionMap to return string[]
}
$viewEditAndDelete = 1 | 4 | 8; // 13
getPermissions($viewEditAndDelete, $permissionMap); // ['VIEW', 'EDIT', 'DELETE']
只需检查是否设置了特定的掩码。实际上,如果我们遍历
$map
并检查其标志是否已设置,这非常简单:
function getPermissions($mask, $permissionMap) {
$permissions = [];
foreach( $permissionMap as $perm => $val )
if( $mask & $val )
array_push( $permissions, $perm );
return $permissions;
}
另一方面,在创建
$permissionMap
数组时,应该使用,
作为分隔符,而不是代码>(并且在'DELETE'=>8
之后缺少分隔符)。