PHP usando a autoridade de controlo do operador bit

operadores bit a bit pode ser feito em uma aplicação prática as permissões de aplicativos do usuário

Eu estava aqui quando se trata da gestão de direitos abordagem método é amplamente utilizado, principalmente para usar a operação "símbolo prazo bit", com pedaços e operador , | bits ou caráter prazo. Se ele está envolvido no cálculo do número decimal 10, que vai ser convertido em números binários envolvidos no cálculo e os resultados dos cálculos são em seguida convertidos a saída decimal.

É como um valor privilégio

2 ^ 0 = 1, 2 para o número correspondente é "0001" (aqui denotada como eu ^, "potência", a saber: 0 th potência de 2, o mesmo abaixo)

2 ^ 2 = 1, 2 para o número correspondente é "0010"
2 ^ 2 = 4, 2 no número correspondente é "0100"
2 ^ 3 = 8, 2 para o número correspondente é "1000"

Para determinar um certo número no intervalo de números pode ser usado & operador (o valor obtido a partir da tabela acima)

Tais como: 7 = 4 | 2 | 1 (você pode simplesmente interpretada como 7 = 4 + 2 + 1)

Para operar com e pode conhecer 7 e 4,7 e 2,7 & 1 é verdade, e se a 7 e 8 é falsa

&, | Vai olhar-se familiarizado manual para ver como o uso da

 

Vamos olhar um exemplo:

$ perArr = gama (
             'ler' => 1 << 0, // 2 ^ 0 
            'write' => 1 << 1, // 2 ^ 1 
            'Excute' => 1 << 2, // 2 ^ 2 
            'delete' => 1 << 3, // 2 ^ 3 
            'gerenciar' => 1 << 4, // 2 ^ 4 
        ); 
        $ str = $ perArr [ 'ler'] | $ perArr [ 'write' ]; // 3 = 1 + 2
         // echo $ str | $ perArr [ 'Excute']; morrer; 
        $ manageMark = $ perArr [ 'ler'] | $ perArr [ 'write'] | $ perArr [ 'Excute'] | $ perArr [' delete ' ];
        $ AdminMark = $ perArr[ 'Read'] | $ perArr [ 'Write'] | $ perArr [ 'Excute'] | $ perArr [ 'Delete'] | $ perArr [ 'Gerenciar' ];
         // total autoridade 
        $ Mark = 0 ;
         foreach ( $ perArr  aS  $ m ) {
             $ Mark = $ Mark | $ m ; 
        } 
        echo  $ Mark ; 31 é // // obter a informação de autoridade atual de acordo com os bits de permissão 
        $ ARR = [];
         o foreach ( $ perArr  aS  $ Key => $ Mark ) {
            se ( $ manageMark & marca $ ) {
                 $ arr [] = $ key ; 
            } 
        } 
     $ Arr = array (
      'ler', 'write', 'Excute', 'delete'
    );

 

OK, permissões marcar que é tal um algoritmo pode ser dito para ser simples e eficiente. Eu não sei que não entendemos, não entendo isso não importa, lembre-se o exemplo na linha. A premissa é fazer os valores dos direitos de distribuição, ou seja, que 1,2,4,8,16 .... (Há um problema de ordem aqui, permissões as permissões mais avançadas necessárias maior valor, como no exemplo acima demonstra eliminado permissões). Com a permissão pode determinar a tabela de distribuição para alguém que autoridade, e você simplesmente quer entender quais permissões para adicionar as permissões adequadas sobre o valor do mesmo.

Este método é muito fácil de usar, a desvantagem é que, se a distribuição dos direitos estava bem, então o valor dos direitos se tornará cada vez maior, pense por si só, 2 quadrados várias vezes, se todas as permissões tenho é tudo somados. Mas, para a autoridade geral para isso é o suficiente.

 

link de referência: https: //www.php.cn/php-weizijiaocheng-369689.html

 

Acho que você gosta

Origin www.cnblogs.com/guliang/p/12525319.html
Recomendado
Clasificación