Zend: ACL и Auth через наследование, а не композицию - PullRequest
1 голос
/ 20 сентября 2011

Я прочитал несколько разных книг Zend, где ACL и Auth реализованы с использованием композиции. Обычно они включают помощников действий с методами preDispatch, зарегистрированными в начальной загрузке.

Теперь, во всем кодировании, до сих пор одни и те же методы ACL и Auth выполняются для каждого из моих контроллеров. Поэтому я думаю, что я мог бы также использовать наследование для достижения этой цели. Я что-то пропустил? Наследование кажется немного более простым.

Ранее я использовал Помощники действий, чтобы избежать необходимости загружать все правила в объект ACL. (Я просто регистрировал текущий контроллер в качестве ресурса ACL и добавлял правила для этого).

Однако, когда я пришел к интеграции Zend Navigation, я обнаружил, что мне нужны все правила ACL (независимо от контроллера), чтобы определить, какие пункты меню следует представить пользователю.

Полагаю, что с композицией мои помощники ACL и Auth легче использовать в других проектах, но в моем случае это лишь небольшое преимущество.

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Вы также можете использовать плагины контроллеров, см. предыдущий ответ , выглядит как композиция, но очень близка к наследованию контроллеров.И это не мешает вам иметь объект Zend_Acl, доступный для меню.

1 голос
/ 20 сентября 2011

Есть много веских причин, чтобы предпочесть композицию наследованию в целом. Вы можете увидеть много мнений здесь: Предпочитаете композицию по наследству?

Тем не менее, вам решать, есть ли у вас более веские причины использовать наследование вместо композиции. Вы можете интегрировать свой ACL в базовый класс контроллеров и сделать так, чтобы все ваши контроллеры наследовали его. У вас есть еще один вопрос об этом здесь: Базовый контроллер для всех контроллеров в Zend Framework

Надеюсь, это поможет,

...