应用场景:
你是否遇到过这样的问题?我现在有个功能有很多权限控制,但是我不能使用很多字段用1,0来存储这么多权限,这样做感觉太low了,而且判断起来需要用到很多字段,维护起来好麻烦,后期如果再新增其他权限还需要新增字段。
下面用一个简单的小技巧告别这种不科学和反人类的设计吧!
这里只需要用到几个php的位运算,参照php官方文档
所以我们只需要用一个十进制数字来存储这些权限即可,十进制转换为二进制后的每一位都代表一个权限,为1则有权限,为0则无权限。
show me the code!
<?php
$write = 2; // 写权限用2表示
$read = 4; // 读权限用4表示
$high = 8; // 最高权限用8表示
// 还可以根据需求定义更多的权限,但注意必须为2的指数
$audit_type = 0; 初始化权限值,0则是所有多没有权限
// 我想给一个人加个写权限
$audit_type = $audit_type | $write;
// 再加个读权限和最高权限
$audit_type = $audit_type | $read | $high;
// 判断一下是否加上了呢
if (($audit_type & $write) != 0) {
echo "i have write level";
}
if (($audit_type & $read