Модульная структура каталогов по умолчанию для приложения Zend Framework - PullRequest
3 голосов
/ 13 сентября 2009

Мне известна структура каталогов по умолчанию для модульных приложений Zend Framework, которая приведена в руководстве.

/application
  /controllers
  /modules
    /admin
      /controllers
      /views
  /views
  /configs
/www
  index.php

Но мне интересно, почему я должен делать это так. Действительно достаточно иметь модуль по умолчанию в / application и другие модули в / application / modules /: moduleName . Это больше вопрос для обсуждения, чем вопрос help-me .

Каковы плюсы и минусы такой структуры каталогов:

/application
  /modules
    /admin
      /controllers
      /views
    /default
      /controllers
      /views
  /configs
/www
  index.php

С моей точки зрения, единственным недостатком является то, что это не написано так по умолчанию / в руководстве. Я не вижу другого. Я что-то пропустил?

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

Ответы [ 5 ]

5 голосов
/ 04 марта 2010

На самом деле предложенная вами структура каталогов более чем подходит для больших и сложных приложений.

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

Опять же, для простых приложений и для изучения Zend, я бы предложил всем придерживаться структуры каталогов по умолчанию.

4 голосов
/ 02 октября 2009

На самом деле это один из параметров, подробно описанных в http://framework.zend.com/manual/en/zend.controller.modular.html

Ваш путь звучит хорошо, и смысл ZF в том, что вы можете сами выбирать, как управлять вещами. Одно преимущество немного меньше кода. В подходе Zend по умолчанию вы должны использовать это:

$front = Zend_Controller_Front::getInstance();
$front->addControllerDirectory('/path/to/application/controllers', 'default');
$front->addModuleDirectory('/path/to/application/modules');

В то время как в подходе вы описываете:

$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory('/path/to/application/modules');

Это все, что вам нужно.

Одним из преимуществ подхода Zend является то, что если вам не нужны модули, тогда нет необходимости запускать метод addModuleDirectory (). При вашем подходе это всегда нужно запускать, потенциально создавая небольшие накладные расходы.

На этой странице http://framework.zend.com/manual/en/project-structure.project.html говорится, что каталог по умолчанию для контроллеров «внутри каталога приложения обеспечивает лучший макет для запуска простого проекта, а также для запуска модульного проекта, который имеет глобальные контроллеры / модели / представления». *

Я полагаю, что точка зрения Зенда заключается в том, что это работает как для простых сайтов с модулем по умолчанию, так и для более сложных с несколькими модулями. Нетрудно разработать дополнительные модули в каталоге modules /. Но в конце концов, это личное предпочтение.

4 голосов
/ 13 сентября 2009

Полагаю, этот путь потому, что:

  • существует структура по умолчанию, которая используется, когда в приложении нет модуля (т. Е. Только модуль по умолчанию - что означает отсутствие необходимости в каталоге по умолчанию)
  • и затем вы можете добавлять модули; без необходимости изменять существующую структуру.

Это объяснение так же хорошо, как и любое другое, я полагаю.


Тем не менее, если разрабатывать приложение, которое будет содержать несколько модулей, и, зная это с самого начала, я, вероятно, остановлюсь на предложенном вами типе будущего, а не на предложенном по умолчанию ^^

С моей точки зрения, все было бы более ясно - и я не вижу в этом никакой проблемы!

(На самом деле, я когда-то так, довольно давно, и не встречал никаких проблем - но это не было «законченное» приложение; скорее прототип ...)

1 голос
/ 26 апреля 2011

Вы можете найти желаемую архитектуру здесь: http://www.osebboy.com/blog/zend-framework-modules/

1 голос
/ 15 сентября 2009

Я борюсь с той же проблемой. Но мне не удается настроить это должным образом ... Я хочу использовать это потому, что модульная структура в сочетании с Zen_Application создает экземпляр Module_Bootstrapper, который автоматически регистрирует пространства имен в / application / module / name / forms (и контроллерах, представлениях, моделях и т. Д.).

Единственная проблема, с которой я столкнулся, это избавление от модуля 'default': S

Вы можете найти тему на форумах Zend здесь: http://forums.zend.com/viewtopic.php?f=69&t=2394&start=0

Надеюсь, он получит ответ, или я выложу его здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...