3

我打算使用二进制系统来处理我的权限,如下所示:

<?php
const POST = 1;
const DELETE = 2;
const UPDATE = 4;
const READ = 8;
const ADMIN = 16;
const ADD_PRODUCT = 32;
const DELETE_PRODUCT = 64;
const ADD_BLOG = 128;


$permission = decbin('5');

if ($permission & POST) { echo "POST <br />"; }
if ($permission & DELETE) { echo "DELETE <br />"; }
if ($permission & UPDATE) { echo "UPDATE <br />"; }
if ($permission & READ) { echo "READ <br />"; }
if ($permission & ADMIN) { echo "ADMIN <br />"; }

?>

有了一些权限,这将运行良好。但是如果我有 40 种不同的权限呢?然后我需要把一些非常大的数字加起来,这很麻烦。

还有其他方法吗?

任何信息或帮助将不胜感激!

4

1 回答 1

0

1) 使用十六进制来定义常量——它更容易输入。

2) 将单独的权限分解为不同的用户角色。

例如

const BLOG_POST      = 0x01;
const BLOG_DELETE    = 0x02;
const BLOG_UPDATE    = 0x04;
const BLOG_READ      = 0x08;
const BLOG_SUBSCRIBE = 0x10;

const ADMIN_IS_ADMIN       = 0x01;
const ADMIN_ADD_PRODUCT    = 0x02;
const ADMIN_DELETE_PRODUCT = 0x04;
const ADMIN_ADD_BLOG       = 0x08;

即使您处理大量数字,它们仍然很容易输入

const ADMIN_SOME_PERMISSION   = 0x1000;
const ADMIN_SOME_PERMISSION2  = 0x2000;
于 2012-07-24T14:32:21.510 回答