Gevorderd gebruik Het opslaan van ACL data voor langere duur Zend_Acl is zo ontworpen dat het geen aparte achterliggende technologie zoals een database of een cache server voor het opslaan van ACL data nodig heeft. De complete PHP implementatie maakt het mogelijk om aangepaste administratie programma's te maken, gebouwd op Zend_Acl met relatief gemak en flexibiliteit. Veel situaties vereisen een vorm van interactief onderhoud van de ACL en Zend_Acl levert methodes om dit op te zetten en het raadplegen van, de toegangscontrole van een applicatie. Het opslaan van de ACL Data is daarom overgelaten als een taak voor de ontwikkelaar, want de verwachting is dat de gebruikersprocessen veel variƫren voor de verschillende situaties. Omdat Zend_Acl te ordenen is, kan een ACL object geordend worden met de PHP functie serialize() en het resultaat kan worden opgeslagen waar de ontwikkelaar dat wenst, zoals een bestand, database of een caching mechanisme. Schrijven van conditionele ACL regels met een vereising Soms is een regel voor het toestaan of weigeren van een Rol om een Bron te gebruiken niet absoluut, maar hangt dit af van een aantal criteria. Als voorbeeld, stel dat iets moet worden toegestaan, maar alleen tussen 8:00 en 17:00. Een ander voorbeeld is het weigeren van toegang omdat het verzoek komt van een IP adres die gemarkeerd is als een bron van misbruik. Zend_Acl heeft een ingebouwde ondersteuning om regels, gebaseerd op wat voor condities de ontwikkelaar nodig heeft, te implementeren. Zend_Acl levert ondersteuning voor conditionele regels met Zend_Acl_Assert_Interface. Om de regel vereising interface te gebruiken, schrijft de ontwikkelaar een class die de assert() methode van de interface implementeerd. _isEenSchoonIP($_SERVER['REMOTE_ADDR']); } protected function _isEenSchoonIP($ip) { // ... } }]]> Als een vereising klasse beschikbaar is, moet de ontwikkelaar een instantie hiervan aanleveren wanneer die een conditionele regel toekent. Een regel die is gemaakt met een vereising wordt alleen toepast als de vereising waar heeft terug gestuurd. allow(null, null, null, new schoonIPvereising());]]> De bovenstaande code maakt een conditionele toestaan regel die gebruik toestaat van alle privileges op alles door iedereen, behalve als het verzoekende IP op de "zwarte lijst" staat. Als een verzoek binnenkomt van een IP dat niet beschouwd wordt als "schoon", dan wordt de toestaan regel niet toegepast. Omdat de regel geldt voor alle Rollen, alle bronnen en alle privileges, zal een "niet schoon" IP resulteren in een weigering van toegang. Dit is een speciaal geval, echter, en dit moet worden begrepen dat in alle andere gevallen ( i.e., als een specifieke Rol, Bron of privilege is gespecificeerd voor de rol ), een onwaar vereisingresultaat in de regel niet wordt toegepast en er dus andere regels gebruikt worden om te bepalen of er toegestaan of geweigerd moet worden. Aan de assert() methode van een vereisingobject wordt de ACL, Rol, Bron en privilege doorgegeven, waarop de raadpleging (i.e., isAllowed()) plaatsvind, dit maakt het mogelijk voor de vereisingklasse om te bepalen of zijn condities nodig zijn.