2014-01-09 43 views
0

結果數組我有兩個片斷代碼是這樣的:通行證方法與主要的方法在其他類

class User() 
{ 
    var $permission = array(); 

    function __construct() 
    { 
     $Permission_Class = new Permission(); 
     // What to do here with $this->permission 
     // to linked with $Permission_Class->check_permission() 
     // for getting user's permission? 
    } 
} 

class Permission() 
{ 
    var $permission_list = array(
     'can_read' => 'yes', 
     'can_write' => 'no' 
    ); 

    public function check_permission($permission_name) 
    { 
     return $this->permission_list[$permission_name];   
    } 
} 

我想簡單地輸入權限名稱作爲數組來獲得用戶的許可,尤其是本:

$User1 = new User(); 
$read_permission = $User1->permission['can_read']; // not working currently 

甚至更​​多更好的是這樣的:

$permission = $User1->permission(); 
var_dump($permission['can_read']); // expected 'yes' 

所以預期的結果是「can_read '在課程權限中有'是'的值。 我能做些什麼來實現這一目標?

謝謝。

回答

0

簡單,只是把它包起來!

class User() 
{ 
    private $permission = array(); 

    function __construct() 
    { 
     $this->permission = new Permission(); 
    } 

    public function permission($key) 
    { 
     return $this->permission->check_permission($key); 
    } 
} 

$user->permission('can_read'); 

務必檢查$key是否爲現有密鑰。 EG:

更新後
/** 
* $default would contain the value you want your 
*   requested permission to have if it does not exist 
*/ 
public function check_permission($permission_name, $default = NULL) 
{ 
    return isset($this->permission_list[$permission_name]) 
     ? $this->permission_list[$permission_name] 
     : $default;   
} 

// We want can write to be `FALSE` unless otherwise specified 
$user->permission('can_write', FALSE); 

評論

事件雖然對使用全局權限陣列我的意見(例如,如果你會想知道其他用戶是否有權限can_write),你可以重寫一些它很容易:

/** class User **/ 
public function permission($key = NULL) 
{ 
    // If no key specified, return entire array 
    if($key === NULL) 
    { 
     return $this->permission->permission_list; 
    } 

    return $this->permission->check_permission($key); 
} 

然後在某處你的應用程序

global $permissions; 
$permissions = $user->permission(); 
+0

感謝您的快速回答:)但是,有沒有辦法讓我作爲全局數組訪問權限,而不是通過傳遞方法?例如。我想使用$ permission ['can_read']並直接輸出'yes'。那麼如何處理變量$權限來獲取呢? – Tsuki

+0

如果你堅持使用全局變量(這是不推薦的),你可以使全局變量爲'$ user'。 – AmazingDreams

+0

你能指出我嗎?對不起,我有點困惑。我想要的是,我希望$權限是一個全局權限數組,它的索引作爲check_permission()方法中的參數。例如,$ permission ['can_read']等於'yes',$ permission ['can_write']會給我們'不'。意思是$ permission =某種實現=> $ permission ['can_read'] =>類Permission將運行check_permission('can_read')並返回值,並將其返回給$ permission ['can_read']。因爲我不想在最後使用任何類,只是簡單的變量。 – Tsuki