Сохранение списков ACL в Zend Framework

Предоставляет ли Zend Framework (или приложения, созданные с использованием Zend_Application) какой-либо механизм для сохранения списков ACL, или эта деталь остается отдельным разработчиком системы/приложения?

Большинство примеров, которые я вижу в Интернете, включают настройку правил ACL в коде. Мне любопытно, есть ли стандартный/предпочтительный способ сохранить эти правила в базе данных и/или файловой системе, а затем автоматически загрузить их.

Ответ 1

Утренняя,

это часть пользователя Framework. Мы храним наш Acl внутри файлов .ini или .xml. В сложных проектах мы используем Databasetable для хранения ролей и ресурсов.

В Zend DevZone есть очень хороший пример для использования acl с базой данных.

Zend ACL с базой данных

Ответ 2

Если ACL является сложным, но статическим, вы можете попробовать кешировать свой ACL с помощью Zend_Cache

$cache = Zend_Cache::factory( 'File', 'File',
                                 array( 'automatic_serialization' => true,
                                        'master_file' => 'MyACL.php' ),
                                 array( 'cache_dir' => CACHE_PATH )
                               ));

Ответ 3

Вам может быть интересен этот ресурс Zend_Application и соответствующая конфигурация от Joe Gornick: http://gist.github.com/249442

Ответ 4

Вы не указали, какое искажение сохраняется. Для сохранения продолжительности сеанса вы можете сохранить реестр ACL, который вы создали (объект Zend_Acl) в сеансе, или Zend Registry.

Я также советую создать его в режиме logtime или в одноразовом виде, чтобы избежать перегрузки обработки каждой страницы.