/简单权限类
@author 27_Man/
classPeak_Auth {/权限类计数器
感化在于生成权限值
@var int/
protected static ¥authCount = 0;/权限名称
@var string/
protected ¥authName;/权限具体信息
@var string/
protected ¥authMessage;/权限值
@var int 2的N次方/
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() {
}/设置权限具体信息
@param string ¥authMessage/
public function setAuthMessage(¥authMessage) {¥this->authMessage = ¥authMessage;
}/获取权限名称
@return string/
public functiongetAuthName() {return ¥this->authName;
}/获取权限值
@return int/
public functiongetAuthValue() {return ¥this->authValue;
}/获取权限具体信息
@return string/
public functiongetAuthMessage() {return ¥this->authMessage;
}
}/简单角色类
@author 27_Man/
classPeak_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, Peak_Role ¥parentRole = null) {¥this->roleName = ¥roleName;¥this->authValue = 0;if (¥parentRole) {¥this->parentRole = ¥parentRole;¥this->authValue = ¥parentRole->getAuthValue();
}
}/获取父角色的权限/
protected functionfetchParenAuthValue() {if (¥this->parentRole) {¥this->authValue |= ¥this->parentRole->getAuthValue();
}
}/赐与某种权限
@param Peak_Auth ¥auth
@return Peak_Role 以便链式操纵/
public function allow(Peak_Auth ¥auth) {¥this->fetchParenAuthValue();¥this->authValue |= ¥auth->getAuthValue();return ¥this;
}/阻拦某种权限
@param Peak_Auth ¥auth
@return Peak_Role 以便链式操纵/
public function deny(Peak_Auth ¥auth) {¥this->fetchParenAuthValue();¥this->authValue &= ~¥auth->getAuthValue();return ¥this;
}/检测是否拥有某种权限
@param Peak_Auth ¥auth
@return boolean/
public function checkAuth(Peak_Auth ¥auth) {return ¥this->authValue & ¥auth->getAuthValue();
}/获取角色的权限值
@return int/
public functiongetAuthValue() {return ¥this->authValue;
}
}