二进制交叉权限微型php类分享

 更新时间:2014年02月07日 09:21:59   作者:  
这篇文章主要介绍了二进制交叉权限微型php类,需要的朋友可以参考下

靓点:
1、多对多交叉场景分配;
2、php新特性-闭包使用、批处理函数array_walk/array_flip使用;
3、位运算&使用案例;

使用场景:
1、常见增删改查(2的N次方值入库);
2、认证、第三方账号绑定、多分类选择;

复制代码 代码如下:

<?php

class s_allow{

//声明使用场景,任务清单
public $scene,$case_list=array();

//声明指定用户角色、允许值、允许清单
public $allow_value=0,$allow_list=array();


//初始化场景、角色
function __construct($scene,$allow_value=0){
$this->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

相关文章

  • Laravel 5.5 的自定义验证对象/类示例代码详解

    Laravel 5.5 的自定义验证对象/类示例代码详解

    Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代。接下来通过示例代码给大家介绍laravel 自定义验证对象和类,需要的朋友参考下吧
    2017-08-08
  • 微信支付开发订单查询实例

    微信支付开发订单查询实例

    本篇文章主要介绍微信支付中订单查询功能的实现,并提供代码实例,希望能帮助到微信支付开发的小伙伴
    2016-07-07
  • 浅析PHP7 的垃圾回收机制

    浅析PHP7 的垃圾回收机制

    垃圾回收机制是一种动态存储分配方案。它会自动释放程序不再需要的已分配的内存块。 这篇文章主要介绍了PHP7 的垃圾回收机制,需要的朋友可以参考下
    2019-09-09
  • PHP实现WebService的简单示例和实现步骤

    PHP实现WebService的简单示例和实现步骤

    这篇文章主要介绍了PHP实现WebService的简单示例和实现步骤,本文直接给出示例代码并分步骤讲解,需要的朋友可以参考下
    2015-03-03
  • PHP Streams(流)详细介绍及使用

    PHP Streams(流)详细介绍及使用

    这篇文章主要介绍了PHP Streams(流)详细介绍及使用,PHP Streams是内置核心操作,可能一般的开发者很少用,它用于统一文件、网络、数据压缩等类文件操作方式,并为这些类文件操作提供一组通用的函数接口,需要的朋友可以参考下
    2015-05-05
  • PHP中的socket_read和socket_recv区别详解

    PHP中的socket_read和socket_recv区别详解

    这篇文章主要介绍了PHP中的socket_read和socket_recv区别详解,本文从源码上分析了这两个函数的不同之处,需要的朋友可以参考下
    2015-02-02
  • laravel框架创建授权策略实例分析

    laravel框架创建授权策略实例分析

    这篇文章主要介绍了laravel框架创建授权策略,结合实例形式分析了laravel框架创建授权策略的相关步骤、实现方法与操作注意事项,需要的朋友可以参考下
    2019-11-11
  • PHP日期时间函数date() 详解

    PHP日期时间函数date() 详解

    date()函数是我们在php开发中常碰到并且会使用到的一个日期函数,下面我来给大家介绍date()函数的一些基本扮靓和方法,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • php判断是否连接上网络的方法实例详解

    php判断是否连接上网络的方法实例详解

    本文主要介绍PHP判断是否连接上网络的方法,通过php判断能否打开百度页面来判断是否连接上网络的功能,需要的朋友可以参考下
    2016-12-12
  • Laravel如何使用数据库事务及捕获事务失败后的异常详解

    Laravel如何使用数据库事务及捕获事务失败后的异常详解

    最近在学习Laravel,在学习中遇到了不少的问题,所以想着总结记录下来,所以下面这篇文章主要给大家介绍了关于Laravel如何使用数据库事务及捕获事务失败后异常的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10

最新评论