我已經構建了一個由Admin,Manager和Employee擴展的抽象User類。用戶包含所有用戶需要的所有內容,並根據實例抽象出每個用戶使用不同邏輯處理的所有內容。當我擁有管理員或經理類將以完全相同的方式處理的功能時,我的困惑就出現了,但員工根本無法訪問。處理基於權限的函數的抽象類
例如,管理除自身以外的用戶應該僅限於管理員和管理員,而員工永遠不能這樣做。我想避免在Admin和Manager類中複製/粘貼完全相同的邏輯,因此我應該創建一個私有函數並將其移至User類,並讓Admin/Manager類從那裏調用它?
abstract class User
{
public $username;
public $userId;
public $company;
public $error;
private function updateUser($user)
{
// Logic for saving the user info
}
....
}
class Admin extends User
{
public function updateUser($user)
{
parent::updateUser($user)
}
....
}
class Manager extends User
{
public function updateUser($user)
{
parent::updateUser($user)
}
....
}
class Employee extends User
{
public function updateUser($user)
{
$this->error = "Invalid Permissions";
}
....
}
這應該以不同的方式處理嗎?謝謝。
我有ACL內置到網站我正在使用頁面權限,所以這不會是一個問題。儘管如此,我當然會更喜歡這個實例來決定是否可以執行該操作。你還會推薦使用觀察者解決方案進行ACL檢查嗎? – 2012-03-13 16:22:08