利用按位运算符轻松管理权限

Posted pigfly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用按位运算符轻松管理权限相关的知识,希望对你有一定的参考价值。

运算符

按位与

只有两个数都为1时等于1

0 & 0 = 0;
0 & 1 = 0;
1 & 0 = 0;
1 & 1 = 1;

按位或

两个数其中一个是1等于1

0 | 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 1;

按位异或

两个数不同时等于1,相同则置位0

0 ^ 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 0;

取反

两个数不同时等于1,相同则置位0

~0 = 1;
~1 = 0;

用途

使用上面介绍的运算符可以很轻松地实现权限管理

<?php
//定义权限
$create = 1;
$update = 2;
$read = 4;
$delete = 8;
$all = $create | $update | $read | $delete;

//定义用户组权限
$admin = $all; //管理员拥有所有权限
$guest = $create | $read; //访客只有添加和读权限
$user = $all & ~$delete; //用户拥有除了删除以外的所有权限

//判断某个组是否拥有某个权限
var_dump($user & $update, $user & $delete, $guest & $update);
#=>int(2) int(0) int(0)

以上是关于利用按位运算符轻松管理权限的主要内容,如果未能解决你的问题,请参考以下文章

php 使用按位运算符检查权限

gitlab 可以进行版本和权限控制,bug管理吗?供部门内部使用,而且是Linux和Windows平台都能使用

Discord按位权限计算器[关闭]

使用按位比较与权限模型忽略第一位

GitLab

GitLab版本管理(转)