二进制交叉权限微型php类分享
这篇文章主要介绍了二进制交叉权限微型php类,需要的朋友可以参考下
靓点:
1、多对多交叉场景分配;
2、php新特性-闭包使用、批处理函数array_walk/array_flip使用;
3、位运算&使用案例;
使用场景:
1、常见增删改查(2的N次方值入库);
2、认证、第三方账号绑定、多分类选择;
复制代码 代码如下:
class s_allow{
//声明使用场景,任务清单
public $scene,$case_list=array();
//声明指定用户角色、允许值、允许清单
public $allow_value=0,$allow_list=array();
//初始化场景、角色
function __construct($scene,$allow_value=0){
$this->scene=$scene;
$this->case_list=$this->case_list(true);
if ($allow_value) {
$this->allow_value=$allow_value;
$this->allow_list=$this->allow_list($allow_value,true);
}
}
//取得全部任务清单
function case_list($mode=false){
$case_list=config($this->scene,'allow');
return $mode ? $case_list : array_keys($case_list);
}
//取得用户任务清单
function allow_list($allow_value=0,$mode=false){
$buffer=array();
foreach ($this->case_list as $key=>$value) {
if ($allow_value & pow(2,$key-1)) {
$buffer[$key]=$value;
}
}
return $mode ? $buffer : array_keys($buffer);
}
//计算允许值
function allow_value($allow_list=null){
if ($allow_list==null) $allow_list=$this->allow_list;
array_walk($allow_list, function($value,$key) use(&$allow_list){
$allow_list[$key]=pow(2,$value-1);
});
return array_sum($allow_list);
}
//判断是否允许
function is_allow($case){
$case_list=array_flip($this->case_list);
return (bool)($this->allow_value & pow(2,$case_list[$case]-1));
}
}
复制代码 代码如下:
[access]
1=add
2=del
3=read
4=list
5=mod
6=detail
7=pub
8=collect
9=like
10=send
[cert]
1=email
2=tel
3=qq
4=identity_card
5=real_name
6=business_license
[bind]
1=qq
2=weibo
3=taobao
4=alipay
5=renren
6=weichat
7=baidu

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

EDVAC mempunyai dua penambahbaikan utama: satu ialah penggunaan binari, dan satu lagi ialah penyiapan program yang disimpan, yang secara automatik boleh maju dari satu arahan program ke seterusnya, dan operasinya boleh diselesaikan secara automatik melalui arahan. "Arahan" termasuk data dan program, yang dimasukkan ke dalam peranti memori mesin dalam bentuk kod Iaitu, peranti memori yang sama yang menyimpan data digunakan untuk menyimpan arahan untuk melaksanakan operasi -dipanggil atur cara tersimpan.

Aritmetik binari ialah kaedah operasi berdasarkan nombor binari Operasi asasnya termasuk penambahan, penolakan, pendaraban dan pembahagian. Selain operasi asas, aritmetik binari juga termasuk operasi logik, operasi anjakan dan operasi lain. Operasi logik termasuk DAN, ATAU, NOT dan operasi lain, dan operasi anjakan termasuk operasi anjakan kiri dan anjakan kanan. Operasi ini mempunyai peraturan dan keperluan operan yang sepadan.

Nombor binari diwakili oleh 1s dan 0s. Sistem nombor perenambelasan 16-bit ialah {0,1,2,3…..9,A(10),B(11),…F(15)} untuk menukar daripada perwakilan binari kepada perenambelasan Mewakili bahawa bit ID rentetan dikumpulkan ke dalam ketulan 4-bit, dipanggil nibbles bermula dari bahagian yang paling tidak ketara. Setiap blok digantikan dengan nombor heksadesimal yang sepadan. Mari kita lihat contoh untuk mendapatkan pemahaman yang jelas tentang perwakilan nombor heksadesimal dan perduaan. 001111100101101100011101 3 E 5 B&nb

Bagaimana untuk membaca fail binari di Golang? Fail binari ialah fail yang disimpan dalam bentuk binari yang mengandungi data yang boleh dikenali dan diproses oleh komputer. Di Golang, kita boleh menggunakan beberapa kaedah untuk membaca fail binari dan menghuraikannya ke dalam format data yang kita inginkan. Berikut akan memperkenalkan cara membaca fail binari di Golang dan memberikan contoh kod tertentu. Pertama, kita perlu membuka fail binari menggunakan fungsi Buka dari pakej os, yang akan mengembalikan objek fail. Kemudian kita boleh buat

计算机采用二进制的主要原因:1、计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示;2、二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。

Tajuk: Belajar menukar heksadesimal kepada perduaan dalam bahasa Go Contoh kod khusus diperlukan Dalam pengaturcaraan komputer, operasi penukaran antara nombor asas yang berbeza sering terlibat. Antaranya, penukaran antara heksadesimal dan binari adalah agak biasa. Dalam bahasa Go, kita boleh mencapai penukaran heksadesimal kepada binari melalui beberapa contoh kod mudah Mari kita belajar bersama. Mula-mula, mari kita lihat kaedah perwakilan heksadesimal dan perduaan. Heksadesimal ialah kaedah mewakili nombor, menggunakan 0-9 dan A-F untuk mewakili 1

Nombor negatif diwakili dalam komputer menggunakan pelengkap dua, iaitu nombor negatif diwakili oleh pelengkap dua nombor positif.

计算机在处理数据时,一次能直接处理的二进制数据的位数称为:字长。字长是指计算机一次能直接处理的二进制数据的位数,字长越长,计算机的整体性能越强。
