Home  >  Article  >  Backend Development  >  Detailed explanation of binary cross permission micro PHP class_PHP tutorial

Detailed explanation of binary cross permission micro PHP class_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:39:33887browse

This article mainly introduces the binary cross permission micro php class, friends in need can refer to it

Highlights: 1. Many-to-many cross-scenario allocation; 2. New features of PHP - use of closures and batch processing functions array_walk/array_flip; 3. Bit operations & use cases; ​ Usage scenarios: 1. Common additions, deletions, modifications and searches (the Nth power value of 2 is stored in the database); 2. Authentication, third-party account binding, multi-category selection; ​ The code is as follows: 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); } } ​ ​ //Get all task lists function case_list($mode=false){ $case_list=config($this->scene,'allow'); return $mode ? $case_list : array_keys($case_list); } ​ ​ //Get user task 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); } ​ ​ //Calculate allowed values 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); } ​ ​ //Determine whether it is allowed function is_allow($case){ $case_list=array_flip($this->case_list); return (bool)($this->allow_value & pow(2,$case_list[$case]-1)); } } The code is as follows: [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

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/730222.htmlTechArticleThis article mainly introduces the binary cross permission micro php class. Friends who need it can refer to the following highlights: 1. Many-to-many cross-scenario allocation; 2. PHP new features - closure usage, batch processing functions...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn