/**
* 単純な権限クラス
*/
class Peak_Auth {
/**
* 権限タイプカウンター
* 権限値の生成に使用されます
*
*/
protected static $authCount = 0;
/**
* 権限名
*
* @var string
*/
protected $authName;
/**
* 権限の詳細
*/
protected $authMessage;
/**
*/
protected $authValue;
/**
* コンストラクター
* 権限名、権限の詳細、権限の値を初期化します
*
* @param string $authName 権限名
* @param string $authMessage 権限の詳細
*/
public function __construct($authName, $authMessage = '') {
$this ->authName = $authName;
$this->authMessage = $authMessage;
$this->authValue = 1 << self::$authCount;
self::$authCount++;
}
/**
* このクラスではオブジェクトのコピー操作は許可されません
*/
private function __clone() {
}
/**
*/
public function setAuthMessage($authMessage ) {
$this->authMessage = $authMessage;
}
/**
*/
public function getAuthName() {
return $this->authName;
}
/**
* /
public function getAuthValue() {
return $this->authValue;
}
/**
* 許可の詳細を取得します
*/
public function getAuthMessage() {
return $this->authMessage;
}
}
/**
* シンプルなキャラクタークラス
*
* @author 27_Man
*/
class Peak_Role {
/**
* キャラクター名
*
* @var string
*/
protected $roleName;
/**
* ロールが所有する権限の値
**/
protected $authValue;
/**
* 親ロールオブジェクト
*
* @var Peak_Role
*/
protected $parentRole;
/***/
public function __construct($roleName, Peak_Role $parentRole = null) {
$this->roleName = $roleName;
$this->authValue = 0;
if ($parentRole) {
$this->parentRole = $parentRole;
$this->authValue = $parentRole->getAuthValue();
}
}
/**
* 親の役割の権限を取得します
*/
保護されていますfunction fetchparenauthvalue(){
if($ this-&gt; parentrole){
$ this-&gt; authvalue | = $ $ this-&gt; parentrole-&gt; getauthvalue(); /
public functionallow(Peak_Auth $auth) {
$this->fetchParenAuthValue();
$this->authValue |= $auth->getAuthValue();
return $this;
}
/**
*許可を与える
*
* @param peak_auth $auth
*/
public functiondeny(Peak_Auth $auth) {
$this->fetchParenAuthValue();
$this->authValue &= ~$auth->getAuthValue();
return $this;
}
/**
*/
public function checkAuth(Peak_Auth $auth) {
return $this->authValue & $auth->getAuthValue();
}
/**
*/
public function getAuthValue() {
return $this->authValue;
}
}
5.对权制限类和角色类的简单操作例子
复制發
代码如下:
//読み取り可能、書き込み可能、実行可能の 3 つの権限を作成します
$read = new Peak_Auth('CanRead');
$write = new Peak_Auth('CanWrite');
$exe = new Peak_Auth('CanExe ');
// ロールを作成します User
$user = new Peak_Role('User');
// User
$admin = new Peak_Role('Admin', $user );
のすべての権限を持つ別のロール Admin を作成します//ユーザーに読み取りおよび書き込み権限を与えます
$user->allow($read)->allow($write);
//管理者に実行権限を与え、ユーザーの権限も持ちます
$admin->allow( $exe);
// 管理者の書き込み権限を禁止します
$admin->deny($write);
// 管理者が特定の権限を持っているかどうかを確認します
var_dump($admin->checkAuth($read));
var_dump( $admin->checkAuth($write));
var_dump($admin->checkAuth($exe));
http://www.bkjia.com/PHPjc/327987.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327987.html技術記事 1. 先頭に書いてください。最近、許可処理について簡単なことを書きたいと思いました。また、2 進数のビット演算がこのタスクを見事に達成できることも学びました。 2進数のビットについて...