最近想寫一個簡單的關於權限處理的東西
將權限按照
define(
define(
define(
define(
權限操作其實涉及到“角色”這個概念
// 給予某種權限用到“位或”運算符
$a_access = ADD | UPD | SEL | DEL; // a擁有增刪改查權限
$b_access = ADD | UPD | SEL; // b擁有增改查權限
$c_access = ADD | UPD; // c擁有增改權限
// 禁止某種權限用“位與”和“位非”運算符
$d_access = $c_access & ~UPD; // d只擁有了增權限
// 檢測是否擁有某種權限用到“位與”運算符
var_dump($b_access & ADD); //
var_dump($b_access & DEL); //
運用上面的權限操作方法
/**
* 簡單權限類
*/
class Peak_Auth {
/**
* 權限類計數器
* 作用在於生成權限值
*
* @var int
*/
protected static $authCount =
/**
* 權限名稱
*
* @var string
*/
protected $authName;
/**
* 權限詳細信息
*
* @var string
*/
protected $authMessage;
/**
* 權限值
*
* @var int
*/
protected $authValue;
/**
* 構造函數
* 初始化權限名稱
*
* @param string $authName 權限名稱
* @param string $authMessage 權限詳細信息
*/
public function __construct($authName
$this
$this
$this
self::$authCount++;
}
/**
* 本類不允許對象復制操作
*/
private function __clone() {
}
/**
* 設置權限詳細信息
*
* @param string $authMessage
*/
public function setAuthMessage($authMessage) {
$this
}
/**
* 獲取權限名稱
*
* @return string
*/
public function getAuthName() {
return $this
}
/**
* 獲取權限值
*
* @return int
*/
public function getAuthValue() {
return $this
}
/**
* 獲取權限詳細信息
*
* @return string
*/
public function getAuthMessage() {
return $this
}
}
/**
* 簡單角色類
*
* @author
*/
class Peak_Role {
/**
* 角色名
*
* @var string
*/
protected $roleName;
/**
* 角色擁有的權限值
*
* @var int
*/
protected $authValue;
/**
* 父角色對象
*
* @var Peak_Role
*/
protected $parentRole;
/**
* 構造函數
*
* @param string $roleName 角色名
* @param Peak_Role $parentRole 父角色對象
*/
public function __construct($roleName
$this
$this
if ($parentRole) {
$this
$this
}
}
/**
* 獲取父角色的權限
*/
protected function fetchParenAuthValue() {
if ($this
$this
}
}
/**
* 給予某種權限
*
* @param Peak_Auth $auth
* @return Peak_Role 以便鏈式操作
*/
public function allow(Peak_Auth $auth) {
$this
$this
return $this;
}
/**
* 阻止某種權限
*
* @param Peak_Auth $auth
* @return Peak_Role 以便鏈式操作
*/
public function deny(Peak_Auth $auth) {
$this
$this
return $this;
}
/**
* 檢測是否擁有某種權限
*
* @param Peak_Auth $auth
* @return boolean
*/
public function checkAuth(Peak_Auth $auth) {
return $this
}
/**
* 獲取角色的權限值
*
* @return int
*/
public function getAuthValue() {
return $this
}
}
// 創建三個權限
$read = new Peak_Auth(
$write = new Peak_Auth(
$exe = new Peak_Auth(
// 創建一個角色 User
$user = new Peak_Role(
// 創建另一個角色 Admin
$admin = new Peak_Role(
// 給予 User 可讀
$user
// 給予 Admin 可執行的權限
$admin
// 禁止 Admin 的可寫權限
$admin
// 檢測 Admin 是否具有 某種權限
var_dump($admin
var_dump($admin
var_dump($admin
From:http://tw.wingwit.com/Article/program/PHP/201311/21244.html