Лучший способ упаковать модуль Zend общего назначения

Поскольку наша компания начинает использовать Zend Framework в качестве базовой платформы для большинства наших проектов, мы хотим поделиться некоторыми общими элементами во всех наших проектах. Я говорю о таких вещах, как:

  • Реализация модели (на основе доктрины2)
  • RBAC для модели, включая пользователя, группу, ролевые модели
  • Шаблонный движок на основе xml для внутренних интерфейсов ajax
  • (вы называете это) ...

В основном, все вещи, чтобы положить "Zend на рельсах" и начать работу. Каков наилучший способ упаковки этих компонентов? Я вижу две возможности:

Как модули

Мы включаем необходимые функции как отдельные модули в папку модулей.

Pro:

  • Мы можем устанавливать маршруты и выполнять код, что хорошо для многих модулей (воображаемый пример: для модуля paypal нужен какой-то URL-адрес обратного вызова. Если наш модуль может установить его самостоятельно, конфигурация от "разработчика проекта" не требуется),
  • Мы можем предоставить реальную функциональность (например, администрирование пользователей) из коробки
  • У нас есть бутстрап для настройки автозагрузки, доктрины и т. Д.

Против:

  • Плохое место? Мешает пользователям проекта
  • Немного сложнее делиться между проектами (подмодули git вместо classpath)

В папке библиотеки

Мы помещаем его в папку библиотеки и указываем на него путь к классам.

Pro:

  • Чистый раствор
  • Совместное использование проектов

Против:

  • Bootstrap должен быть явно назван
  • Никакой прямой маршрутизации или действий - все должно быть передано через конкретный проект

Итак, как вы решаете это? Где вы кладете свои многоразовые вещи общего назначения в zf?

1 ответ

Решение

Я думаю, что вы должны использовать оба подхода.

При разработке "подобного библиотеке" кода, например, в виде "инфраструктурных" классов и других вещей, которые можно использовать повторно (таких как собственные компоненты ZF, компоненты Doctrine 2 и т. Д.), Вы можете поместить их в каталог библиотеки. (или свой собственный совершенно отдельный проект)

При разработке реальных модулей ZF (например, модуля auth) отформатируйте код вокруг структуры модуля ZF.

Я думаю, что, используя такой подход, вы получаете все преимущества, которые вы перечислили, и почти ни одного из минусов:)

В качестве дополнительной идеи, если вы разрабатываете свои части архитектуры как "сервисы", вы можете даже поддерживать их в качестве собственных конечных точек веб-сервисов.

Другие вопросы по тегам