Что делать, если у вас много прав доступа к двоичной системе?


Я планирую использовать двоичную систему для обработки моих разрешений, например:

<?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 различных разрешений? Затем мне нужно сложить несколько действительно больших чисел, что является занозой в заднице.

Есть ли какой-нибудь другой способ?

Любая информация или помощь будут значительно оценены!

Author: BlueCola, 2012-07-24

1 answers

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;
 0
Author: Danack, 2012-07-24 14:32:21