implementare l'ACL, una volta fatto te lo trovi per tutta l'applicazione e non devi praticamente mai metterci le mani (solo per andarci a registrare un nuovo controller che crei e definire i ruoli).

Se lavori su progetti ZF, questo esempio può esseri utile:
(non ho mai provato ad utilizzare questa classe singolarmente in progetti php già esistenti, ma credo cmq sia uguale)

AccessControl.php (lo metti nella library)
Codice PHP:
class AccessControl extends Zend_Acl{
    
    public function 
__construct(){
        
      
$index = new Zend_Acl_Resource('index');
        
$this->add($index);
        
        
$this->add(new Zend_Acl_Resource('error'));
        
$this->add(new Zend_Acl_Resource('login'));
                
//Registro il controller Main
                
$this->add(new Zend_Acl_Resource('main'));

        
$guest = new Zend_Acl_Role('guest');
        
$this->addRole($guest);

        
$this->addRole(NEW Zend_Acl_Role('member'),'guest'); 


        
$this->allow('guest','error');    
        
$this->allow('guest','index');//il guest puo vedere index        
        
$this->allow('guest','login');//il guest puo vedere login
        
$this->allow('member','main');//il member puo vedere MainController

    
}        

AuthPlugin.php (lo metti nella library)
Codice PHP:
class AuthPlugin extends Zend_Controller_Plugin_Abstract{
    
    public function 
preDispatch(Zend_Controller_Request_Http $request){
        
        
$controller $request->getControllerName(); 
        
$action     $request->getActionName();
        
        
$auth Zend_Auth::getInstance();
        
$role 'guest';
                 
        if (
$auth->hasIdentity()){ 
            
$role 'member';
        }
        
        
$acl Zend_Registry::get('acl');
        

        if(
$acl->isAllowed($role,$controller,$action)){
            
//echo "Autorizzato";            
        
}
        else{
            
//rimando l'utente al login
                        
$request->setControllerName('login');
            
$request->setActionName('index');        
        }    
    }
    

Aggiungi queste funzione nel Bootstrap in modo da avviare la risorsa ad ogni richiesta:
Codice PHP:
    function _initAccessControl(){         
         
$acl = new AccessControl();
        
Zend_Registry::set('acl'$acl);
    }
    
    function 
_initSetController(){
        
$this->bootstrap('FrontController'); 
        
$front $this->getResource('FrontController');
         
$front->registerPlugin(new AuthPlugin());    
     }