2010-01-08 102 views
0

嘿,我從Zend開始,試圖理解它的工作方式(到達那裏)以及Acl類,人們似乎將所有角色和資源聲明在一個文件中。現在對我來說,如果這個人只是以一個基本用戶的身份登錄,或者甚至只是該網站的訪客/訪問者,這似乎有點浪費系統資源。所以我在想是否有可能設置不同的類,這些類將角色設置爲當前用戶的角色/資源。我現在的想法是在引導中使用switch/case中的角色,並根據角色名稱加載各個Acl類(例如,'visitor'=>'Model_VisitorAcl','users'=>' Model_UserAcl'和'admin'=>'Model_AdminAcl'),每個都有相應的類文件。然後在課堂文件中爲每個文件做一些事情。這是行得通的,目前我可以將所有的'admin'acls定義爲一個(通過admin-user-visitor的權限級別進行回溯),然後在'用戶'中有'用戶' - '訪問者'角色和資源。Zend_Acl模塊化類系統

但是,這似乎並不是最好的方式,就好像我想改變'user'的角色權限一樣,我需要將它改爲'user'和'admin'。這對於2個角色來說不是問題,但是在更大的系統上顯然是這樣。

所以,我想是這樣

 
class Model_AdminAcl extends Zend_Acl{ 
    function __construct(){ 
    $d = new Model_UserAcl(); 

    //defining the admin role and permissions, with inheritance from the roles 
    //set in Model_UserAcl 
    } 
} 

要嘗試並獲得Model_UserAcl構造函數運行,從而設置角色「用戶」,但是這似乎並沒有工作,拋出「未捕獲的異常‘Zend_Acl_Role_Registry_Exception’帶有'父角色ID'用戶'消息不存在'消息'「 錯誤。

那麼下一步呢?對每個模塊有單獨的包含文件,並且具有所需的類包括它們根據需要?

還是我只是在這個問題上從山麓山上出山?

感謝, 精神科

回答

0

好了,解決了這個,不知道爲什麼我沒有想到要試試這個擺在首位(星期五腦得死去活來,我認爲)

我只是把的內容構造函數放到它自己的函數中,然後在構造函數中調用該函數,並使類從它下面的類繼承。

 

//Model/VisitorAcl.php 
class Model_VisitorAcl extends Zend_Acl{ 
    function __construct(){ 
    $this->addVisitorRules(); 
    } 

    function addVisitorRules(){ 
    //adding the role and permissions 
    } 
} 

//Model/UserAcl.php 
class Model_UserAcl extends Model_VisitorAcl{ 
    function __construct(){ 
    $this->addVisitorRules(); 
    $this->addUserRules(); 
    } 

    function addUserRules(){ 
    //adding the role and permissions 
    } 
} 

//Model/AdminAcl.php 
class Model_AdminAcl extends Model_AdminAcl{ 
    function __construct(){ 
    $this->addVisitorRules(); 
    $this->addUserRules(); 
    $this->addAdminRules(); 
    } 

    function addAdminRules(){ 
    //adding the role and permissions 
    } 
} 

如果這不是我應該去做的事情,那麼請務必讓我知道。

Psy