国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

二進(jìn)制交叉權(quán)限微型php類分享

2024-09-04 11:46:54
字體:
供稿:網(wǎng)友

這篇文章主要介紹了二進(jìn)制交叉權(quán)限微型php類,需要的朋友可以參考下

靚點(diǎn):

1、多對(duì)多交叉場(chǎng)景分配;

2、php新特性-閉包使用、批處理函數(shù)array_walk/array_flip使用;

3、位運(yùn)算&使用案例;

使用場(chǎng)景:

1、常見增刪改查(2的N次方值入庫);

2、認(rèn)證、第三方賬號(hào)綁定、多分類選擇;

代碼如下:

  1. <?php 
  2.  
  3. class s_allow{ 
  4.  
  5. //聲明使用場(chǎng)景,任務(wù)清單 
  6. public $scene,$case_list=array(); 
  7.  
  8. //聲明指定用戶角色、允許值、允許清單 
  9. public $allow_value=0,$allow_list=array(); 
  10.  
  11.  
  12. //初始化場(chǎng)景、角色 
  13. function __construct($scene,$allow_value=0){ 
  14. $this->scene=$scene
  15. $this->case_list=$this->case_list(true); 
  16.  
  17. if ($allow_value) { 
  18. $this->allow_value=$allow_value
  19. $this->allow_list=$this->allow_list($allow_value,true); 
  20.  
  21.  
  22. //取得全部任務(wù)清單 
  23. function case_list($mode=false){ 
  24. $case_list=config($this->scene,'allow'); 
  25. return $mode ? $case_list : array_keys($case_list); 
  26.  
  27.  
  28. //取得用戶任務(wù)清單 
  29. function allow_list($allow_value=0,$mode=false){ 
  30. $buffer=array(); 
  31. foreach ($this->case_list as $key=>$value) { 
  32. if ($allow_value & pow(2,$key-1)) { 
  33. $buffer[$key]=$value
  34. return $mode ? $buffer : array_keys($buffer); 
  35.  
  36.  
  37. //計(jì)算允許值 
  38. function allow_value($allow_list=null){ 
  39. if ($allow_list==null) $allow_list=$this->allow_list; 
  40. array_walk($allow_listfunction($value,$keyuse(&$allow_list){ 
  41. $allow_list[$key]=pow(2,$value-1); 
  42. }); 
  43. return array_sum($allow_list); 
  44.  
  45.  
  46. //判斷是否允許 
  47. function is_allow($case){ 
  48. $case_list=array_flip($this->case_list); 
  49. return (bool)($this->allow_value & pow(2,$case_list[$case]-1)); 

代碼如下:

  1. [access] 
  2. 1=add 
  3. 2=del 
  4. 3=read 
  5. 4=list 
  6. 5=mod 
  7. 6=detail 
  8. 7=pub 
  9. 8=collect 
  10. 9=like 
  11. 10=send 
  12.  
  13.  
  14. [cert] 
  15. 1=email 
  16. 2=tel 
  17. 3=qq 
  18. 4=identity_card 
  19. 5=real_name 
  20. 6=business_license 
  21.  
  22.  
  23. [bind] 
  24. 1=qq 
  25. 2=weibo 
  26. 3=taobao 
  27. 4=alipay 
  28. 5=renren 
  29. 6=weichat 
  30. 7=baidu 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武山县| 广河县| 太仓市| 湖南省| 兴和县| 平阴县| 西乡县| 永和县| 南阳市| 黄龙县| 栾城县| 叙永县| 庄河市| 望城县| 武乡县| 明溪县| 浮山县| 瑞安市| 宽城| 宁国市| 奈曼旗| 陇西县| 湖州市| 闸北区| 应城市| 长兴县| 丹寨县| 临西县| 任丘市| 上犹县| 汕尾市| 科技| 凤冈县| 塔河县| 阜阳市| 台南市| 东安县| 板桥市| 鹤庆县| 龙泉市| 团风县|