空间php文件设置权限设置,云河空间 技术文档 关于&^|运算符应用于权限设置方面 php...

位运算符

位运算符允许对整型数中指定的位进行求值和操作。

例子名称结果$a & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。

$a | $bOr(按位或)将把 $a 和 $b 中任何一个为 1 的位设为 1。

$a ^ $bXor(按位异或)将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。

~ $aNot(按位取反)将 $a 中为 0 的位设为 1,反之亦然。

$a << $bShift left(左移)将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。

$a >> $bShift right(右移)将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。运算符有的人会说了,用在php中有什么好处,为什么这里要用位运算

那么当我们设定了权限之后,假如要判断某个权限是不是包含另一个权限,这个时候,位运算有很有用,接下来我们看个例子:

首先,设定好权限的值

/** * This file defines common constants used in ownCloud */

namespace OCP;

/**

* CRUDS permissions.

*/

const PERMISSION_CREATE = 4;

const PERMISSION_READ = 1;

const PERMISSION_UPDATE = 2;

const PERMISSION_DELETE = 8;

const PERMISSION_SHARE = 16;

const PERMISSION_GROUP=32;

const PERMISSION_TEAM=64;

const PERMISSION_ALL = 127;

假如$currentPermission = 7;//转换为二进制即:              0000 0000 0000 0111

而\OCP\PERMISSION_CREATE = 4;//转换为二进制即:0000 0000 0000 0100

\OCP\

假如我们要实现判断当有创建的权限的时候,给它将创建的权限去掉,就可以这样写:

if($currentPermission & \OCP\PERMISSION_CREATE){

$currentPermission = $currentPermission ^ \OCP\PERMISSION_CREATE;

}

7&4 = 0000 0000 0000 0100//等于4

7^4 = 0000 0000 0000 0011//等于3

这样就剔除了创建的权限 ,同样当$currentPermission不包括某个权限的时候给他加上某个权限

if(!($currentPermission & \OCP\PERMISSION_DELETE)){

$currentPermission = $currentPermission | \OCP\PERMISSION_DELETE;

}

7转换为二进制为:0000 0000 0000 0111

8转换为二进制为:0000 0000 0000 1000

7 & 8 = 0000 0000 0000 0000//值为0即false

7 | 8 =  0000 0000 0000 1111//值为15

此时$currentPermission = 7 | 8 = 15

这样就实现了权限的相加

总结:其实在我看来位运算主要就是起到了一个对权限是否存在的判断,这一点用在这里再好不过。当然权限的定义也是有一定规范的,都是2的指数倍。

转载自:https://blog.csdn.net/m0_37865231/article/details/75516193

本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值