Сохранение списков 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 или в одноразовом виде, чтобы избежать перегрузки обработки каждой страницы.