ホームページ >バックエンド開発 >PHPチュートリアル >バイナリ クロス パーミッション ミニ PHP クラス共有_PHP チュートリアル

バイナリ クロス パーミッション ミニ PHP クラス共有_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:39:29933ブラウズ

ハイライト:
1. 多対多のシナリオ間割り当て
2. クロージャーの使用、バッチ関数 array_walk/array_flip の使用
3.

使用シナリオ:

1. 一般的な追加、削除、変更、検索 (2 の N 乗値がデータベースに保存されます)
2. 認証、サードパーティ アカウントのバインド、複数のカテゴリの選択。

コードをコピーします コードは次のとおりです:

クラス 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);
}

//ユーザータスクリストを取得します

functionallow_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);
}

//許可される値を計算する

functionallow_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=集める
9=いいね
10=送る

[証明書]

1=メール
2=電話
3=qq
4=アイデンティティカード
5=本名
6=ビジネスライセンス

[バインド]

1=qq
2=weibo
3=taobao
4=alipay
5=renren
6=weichat
7=baidu


http://www.bkjia.com/PHPjc/730061.html

tru​​ehttp://www.bkjia.com/PHPjc/730061.html技術記事ハイライト: 1. 多対多のシナリオ間割り当て; 2. PHP の新機能 - クロージャーとバッチ処理関数の使用 array_walk/array_flip; 3. ビット操作
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。