Использование Zend Framework и Doctrine с независимыми модульными структурами - PullRequest
3 голосов
/ 14 января 2010

Я видел много статей об интеграции ZF и Doctrine. Здесь также есть предложение для ZF здесь , но у них всегда есть две возможные структуры. Либо они помещают все модели в один каталог моделей верхнего уровня, либо они помещают его в каталог моделей, связанных с модулями.

application
|-- Bootstrap.php
|-- configs
|-- controllers
|-- models           - EITHER HERE
|-- modules
|   -- examplemodule
|       |-- controllers
|       |-- models   - OR HERE
|       |-- views
|-- views

Для наших проектов я вижу проблемы для любого из двух вариантов:
1. Один каталог: application / models - в сложной системе через короткое время появятся сотни файлов, всего, когда у вас есть два класса таблиц (например, User.php и UserTable.php). 2. Каталоги моделей на основе модулей: application / modules / examplemodule / models - во многих случаях мы используем модели в нескольких модулях одновременно. Таким образом, требуется «Пользователь», например, в модулях "игра", "администрация", ...

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

application
|-- Bootstrap.php
...
|-- models
|   -- user
|       |-- User.php
|       |-- Friend.php
|       |-- other user related models
|   -- game
|       |-- Game.php
|       |-- Score.php
|       |-- ...
...

Любое решение должно поддерживать автозагрузку и генерацию классов из файлов yaml.

Есть идеи, ссылки или решения? Спасибо!

Ответы [ 4 ]

1 голос
/ 23 марта 2010
1 голос
/ 17 января 2010

Мы работаем над решением этой проблемы в компании, в которой я сейчас работаю.

В настоящее время мы следуем модульной структуре каталогов Zend, и у нас есть папка моделей в каждом каталоге модулей, с базовым каталогом, подобным этому:

|----application
|--------modules
|------------content
|----------------models
|--------------------Base
|------------------------Content.php
|--------------------Content.php

Наши модели загружаются автоматически, но мы не интегрировали генерацию кода в zf cli, поэтому в настоящее время мы генерируем модели и затем вручную копируем их в каталог модулей.

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

0 голосов
/ 14 июля 2011

Разве пользовательская модель не будет принадлежать пользовательскому модулю в любом случае? И разве игровой модуль не должен иметь какой-либо интерфейс для подключения к пользовательской модели?

Как, например, не использовать пользовательскую модель непосредственно в игровом модуле, а передать пользовательский адаптер в игровой модуль по конфигурации?

Для меня, в конце концов, модули имеют меньше смысла, когда они не являются взаимозаменяемыми.

0 голосов
/ 14 июня 2010

Я храню мой в одном каталоге.Как говорится, время разработки стоит дорого, а время процессора - дешево, так что оптимизируйте для разработчика.Также KISS и YAGNI.Не оптимизируйте, пока не нужно оптимизировать.До этого доверяйте автозагрузчику.

Что бы это ни стоило, сайт, на котором я использую это, довольно занят, и производительность никогда не была проблемой.

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