二进制交叉权限迷你PHP类共享
漂亮点:1、多对多场景分布;
2、PHP的新功能,使用批处理功能关闭,array_walk / array_flip使用;
3,比特操作的用例;
使用场景:
1。检查常见的增删件(n平方值为2);
2、身份验证、第三方帐户绑定、多个分类选择;
复制代码代码如下所示:
< PHP
类s_allow {
语句使用场景,任务列表
美元美元的公共场景,case_list =阵();
声明指定用户角色、允许值、允许列表。
公共allow_value = 0美元美元,allow_list =阵();
初始化场景、角色
功能__construct($的场景,allow_value美元= 0){
这个场景;
这case_list =美元->美元-> case_list(真的);
如果($ allow_value){
美元-> allow_value = $ allow_value;
这allow_list =美元->美元-> allow_list(allow_value美元,真的);
}
}
获取所有任务列表
功能case_list($模式= false){
case_list美元=配置(美元->现场,);
返回的方式:array_keys case_list美元(美元case_list);
}
用户任务列表
功能allow_list($ allow_value = 0,$模式= false){
缓冲区=数组();
foreach(美元-> case_list达关键= >美元值){
如果($ allow_value pow(2,$ key-1)){
缓冲区;
}
}
返回的缓冲区模式:array_keys美元(美元缓冲);
}
允许值计算
功能allow_value($ allow_list = null){
如果($ allow_list = = null)allow_list美元=美元-> allow_list;
array_walk($ allow_list,功能(美元价值,美元关键)使用($ allow_list){
allow_list美元{ $关键} = pow(2,$ 1值);
});
返回array_sum($ allow_list);
}
确定是否允许
功能is_allow($例){
case_list = array_flip美元(美元-> case_list);
返回(bool)(美元-> allow_value pow(2,$ case_list {案例} $ 1));
}
}
复制代码代码如下所示:
{获得}
1 =添加
2 =德尔
3 =读
4 =列表
5 = MOD
6 =细节
7 =酒吧
8 =收集
9 =喜欢
10 =发送
{一定}
1 =电子邮件
2 =电话
3 = QQ
4 = identity_card
5 = real_name
6 = business_license
{把}
1 = QQ
2 =微博
3 =淘宝
4 =支付宝
5 =人人网
6 = weichat
7 =百度