огромный проект Zend Framework и где разместить модели - PullRequest
1 голос
/ 22 августа 2011

У нас огромный проект Zend Framework, это в основном веб-сайт на 4 разных языках и с достаточным количеством страниц. Обычно мое приложение обрабатывает 10 ~ 15 таблиц базы данных и, вероятно, 5/6 контроллеров, поэтому я помещаю всю свою модель в applications/models.

Проблема, связанная с выполнением одного и того же проекта, заставляла бы копировать одни и те же модели в каждом модуле и, вероятно, создавать много дублирующегося кода и усложнять обслуживание. Мне интересно, было бы разумно поставить модели под library?

Как вы, люди, делаете в таком случае? некоторые решения, о которых я думаю, в моем порядке предпочтений

  • Поместить модели и общий код под /library
  • сделать общий модуль и поиграть с автоматической загрузкой, чтобы загрузить эти классы из любых модулей
  • грязная, но возможная настройка некоторых символических ссылок, чтобы файлы в моделях приходили из одного источника ... но, вероятно, плохо

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Я храню весь библиотечный код, включая модели, в / library. ИМО, вот для чего это. Затем, если вам нужно совместно использовать библиотеки (включая модели) между приложениями, вы можете сделать это с помощью одного подмодуля символической ссылки или git:

Ваше локальное приложение:

/myapp/application/
/myapp/public/
/myapp/library/
/myapp/library/MyApp/

Вытягивание внешних зависимостей:

/myapp/library/OtherLib (git submodule of a separate repo)
/myapp/library/ExtraLib (symlink to /path/to/ExtraLib/)

Или:

set_include_path(get_include_path() . ':/path/to/ExtraLib')

Если вы отделите модели от библиотеки, у вас будет две точки монтирования для каждой зависимости.

1 голос
/ 22 августа 2011

Так я обычно структурирую свое приложение, хотя я хранил их в папке library в других проектах. Я предпочитаю эту структуру, а не хранить их в библиотеке, так как модели зависят от приложения, тогда как моя библиотека используется для хранения классов без приложений (?) (Типичные Auth, Filters и т. Д.)

/application
    /models
        // Models
    /modules
        /default
            /controllers
                // Default Controllers
        /admin
            /controllers
                // Admin Controllers
/library
    // Library Classes
...