Я работаю над системой user-role/permission в PHP для script.
Ниже приведен код с использованием метода битмаски для разрешений, которые я нашел на phpbuilder.com.
Ниже эта часть представляет собой гораздо более простую версию, которая могла бы сделать практически то же самое без битовой части.
Многие люди рекомендуют использовать битовые операторы и такие параметры и другие вещи на PHP, но я никогда не понимал, почему. В приведенном ниже коде есть ЛЮБОЕ преимущество от использования первого кода вместо второго?
<?php
/**
 * Correct the variables stored in array.
 * @param    integer    $mask Integer of the bit
 * @return    array
 */
function bitMask($mask = 0) {
    $return = array();
    while ($mask > 0) {
        for($i = 0, $n = 0; $i <= $mask; $i = 1 * pow(2, $n), $n++) {
            $end = $i;
        }
        $return[] = $end;
        $mask = $mask - $end;
    }
    sort($return);
    return $return;
}
define('PERMISSION_DENIED', 0);
define('PERMISSION_READ', 1);
define('PERMISSION_ADD',  2);
define('PERMISSION_UPDATE', 4);
define('PERMISSION_DELETE', 8);
//run function
// this value would be pulled from a user setting mysql table
$_ARR_permission = bitMask('5');
if(in_array(PERMISSION_READ, $_ARR_permission)) {
    echo 'Access granted.';
}else {
    echo 'Access denied.';
}
?>
небитовая версия
<?PHP
/*
   NON bitwise method
*/
// this value would be pulled from a user setting mysql table
$user_permission_level = 4;
if($user_permission_level === 4) {
    echo 'Access granted.';
}else {
    echo 'Access denied.';
}
?>
