Heim >php教程 >php手册 >二进制交叉权限微型php类详解

二进制交叉权限微型php类详解

WBOY
WBOYOriginal
2016-06-13 09:43:461815Durchsuche

 这篇文章主要介绍了二进制交叉权限微型php类,需要的朋友可以参考下

靓点: 1、多对多交叉场景分配; 2、php新特性-闭包使用、批处理函数array_walk/array_flip使用; 3、位运算&使用案例;   使用场景: 1、常见增删改查(2的N次方值入库); 2、认证、第三方账号绑定、多分类选择;    代码如下: scene=$scene; $this->case_list=$this->case_list(true);   if ($allow_value) { $this->allow_value=$allow_value; $this->allow_list=$this->allow_list($allow_value,true); } }     //取得全部任务清单 function case_list($mode=false){ $case_list=config($this->scene,'allow'); return $mode ? $case_list : array_keys($case_list); }     //取得用户任务清单 function allow_list($allow_value=0,$mode=false){ $buffer=array(); foreach ($this->case_list as $key=>$value) { if ($allow_value & pow(2,$key-1)) { $buffer[$key]=$value; } } return $mode ? $buffer : array_keys($buffer); }     //计算允许值 function allow_value($allow_list=null){ if ($allow_list==null) $allow_list=$this->allow_list; array_walk($allow_list, function($value,$key) use(&$allow_list){ $allow_list[$key]=pow(2,$value-1); }); return array_sum($allow_list); }     //判断是否允许 function is_allow($case){ $case_list=array_flip($this->case_list); return (bool)($this->allow_value & pow(2,$case_list[$case]-1)); } } 代码如下: [access] 1=add 2=del 3=read 4=list 5=mod 6=detail 7=pub 8=collect 9=like 10=send     [cert] 1=email 2=tel 3=qq 4=identity_card 5=real_name 6=business_license     [bind] 1=qq 2=weibo 3=taobao 4=alipay 5=renren 6=weichat 7=baidu
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn