if (~$user->permission & User::CREATE_FORUM)
在以上的OO语句中, ~是代表什么意思?
谢谢!

解决方案 »

  1.   


    $user->permission 权限点 比如 1100 前面加 ~ 取反 0011.
    User::CREATE_FORUM 比如 0001 
    进行按位与运算得 0001 大于0则 返回true,证明有权限。具体是这么一个过程
    int create = 0xff ^ 0x01; // 这个数字代表 create 权限
    int delete = 0xff ^ 0x02; // 这个数字代表 delete 权限
    int edit   = 0xff ^ 0x04; // 这个数字代表 edit   权限int power = create  & delete ;// 将拥有的权限赋予 power在判断Power的时候比如判断是否有 create 权限 则 power & (0xff ^ create) == 0 时说明 power 包含create。其它算法也可以。
    使用 + 连接更为简单,将集合与权限点进行按位与即可。