Что такое предпочтительный подход к реализации для Zend Acl - PullRequest
0 голосов
/ 18 ноября 2011

В Zend Framework 1.X какой из следующих подходов лучше и почему?
Подход-1:
Создайте (под) класс, расширяющий Zend_Acl, и используйте его для управления всемиAcl.Это позволит нам использовать все функции / функции Zend_Acl, используя $ this object.

Approach-2:
Создание пользовательского класса, который содержит объект Zend_Acl, и выполняет действия над объектом.Здесь мы можем создавать функции-оболочки и управлять доступом к базовым функциям Zend_Acl и использовать только несколько функций.

Шаблон Singleton можно использовать для обоих подходов, чтобы убедиться, что на всем сайте используется один и тот же Zend_Acl.

Я буду искать подход, который позже смогу легко портировать на ZF-2.0.Если есть какой-либо другой подход, пожалуйста, упомяните его, и я обновлю сообщение соответствующим образом.

Обновление: Существуют ли другие подходы, кроме одного, для поддержки одного объекта Zend_Acl по всему сайту?А что вы думаете об использовании синглтона с подходом-1, а также о пользовательских методах, которые предоставят нам все предопределенные методы Zend_Acl вместе с нашими пользовательскими обертками.

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Я буду искать подход, который позже смогу легко портировать на ZF-2.0.Если есть какой-либо другой подход, пожалуйста, упомяните об этом, и я обновлю сообщение соответствующим образом.

Это замечание настоятельно одобряет подход 2, так как ваша обертка действует как адаптер для реализации ACL, а ваше приложениевзаимодействует только с вашим адаптером, а не Zend_Acl напрямую.Таким образом, позже вы можете изменить конкретную реализацию (то есть состав Zend_Acl) на другую, будь то Zend\Acl или компонент Symfony 2 или что-то, что вы пишете сами ..

0 голосов
/ 19 ноября 2011

В своих проектах я использую модель для управления всей системой ACL (добавление ресурсов, добавление ролей и т. Д.). Очевидно, этот класс расширяет Zend_Acl. Кроме того, я использую плагин, который использует метод preDispatch, чтобы проверить, разрешено ли пользователю, который сделал запрос, получить доступ к запрошенному URL.

...