Zend Framework — Модульная структуры проекта

Zend Framework поддерживает модули, однако реализация этой поддержки на момент написания статьи немного не полноценна, не всё работает на автомате и приходится кое-что доводить руками. Даже рекомендованная структура директорий для модульного приложения в разных местах официальной документации различается. Из неприятных особенностей можно отметить то, что не подключаются автоматически layout-ы для модуля, если их прописать в конфигурационном файле. Точнее он может и подключиться при определенных условиях, но будет применяться уже ко всему проекту, а не к конкретному модулю. И плюс к этому конфигурацию и ресурсы для модуля разработчики фреймворка предлагают прописывать в основной файл конфигурации application.ini в виде:

modulename.resources.foo = "bar"

Соответственно задача стоит следующая:

  1. Сделать возможность автоматически подгружать конфигурационные файлы и layout-ы модуля при их наличии из директории модуля. Это более соответствует концепции модульной структуры — всё, что нужно для модуля, должно храниться в директории модуля. За исключением индивидуального веб-контента (изображения, CSS и JS файлы, пиктограмки, и т.п.), который должен храниться в директории, доступной из веб. Весь этот контент тоже лучше хранить в отдельной поддиректории для данного модуля. Это значительно упрощает установку и удаление модуля простым копированием или удалением нужных директорий, без необходимости что-то дополнительно копировать в основную структуру проекта либо редактировать основной конфигурационный файл проекта.
  2. Инициализировать объект $view специфичными для модуля параметрами, прописанными в конфигурационном файле модуля, или в случае их отсутствия — параметрами по умолчанию.
  3. Сделать всё это максимально просто, прозрачно и гибко. По возможности не меняя структуру проекта, не меняя код проекта, с возможностью поддержки различной структуры организации директорий модулей.

Погуглив и почитав, что в этой области уже было наработано, я не нашел единого готового красивого решения и разработал свое, скомпилировав, дополнив, исправив и подогнав под требуемые цели все идеи, которые видел.

Весь материал логично разделить на несколько частей:

Заключение

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

При публикации данных статей или их фрагментов ссылка на источник (сайт http://konovaltsev.ru/) обязательна.

Вы можете отслеживать комментарии к этой записи с помощью RSS 2.0. Вы можете оставить комментарий, или использовать trackback с вашего сайта.

Добавить комментарий

XHTML: Можно использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>