Я пишу класс ACL, который принимает свои правила из методов «инкубационных»:Как управлять правилами ACL?
<?php
$acl = new AccessControlList();
$acl->allow('someController', 'publicAction', 'guestRole');
$acl->deny('someController', 'privateAction', 'guestRole');
Возникает вопрос: что это лучший вариант для хранения этих правил в объекте ACL?
На данный момент я рассматриваю массив как это:
array(
'guest' => array(
'someController' => array(
'publicAction' => true,
'privateAction' => false
)
),
'admin' => array (
...
)
)
Но, похоже, это будет катастрофой производительности, когда он растет, имея в виду логику, чтобы прочитать массив (infering isAllowed(...)
результаты) и его запись (с конфликтами правил, перезаписыванием, наследованием между ролями и ресурсами ...).
Возможно, я ошибаюсь с самого начала, и эти «сеттеры» являются проблемой. Есть ли какой-либо хорошо установленный шаблон дизайна?
Вы смотрели на 'zend_acl'? Могу дать вам некоторое представление – AlexP
Lazy загружает правила ACL. – Orangepill
@AlexP Фактически моя реализация - это минималистическая версия 'zend_acl' (если я действительно понял, как это работает). Проблема в том, что я думаю, что все упрощение будет платить цену за этот беспорядочный массив. – albertedevigo