Интеграция связок (связанных сущностей Doctrine 2) в Symfony 2 и Coupling - PullRequest
3 голосов
/ 26 декабря 2011

Как я понимаю, Bundles - это отдельный функционал. Предположим, у меня есть UserBundle & BlogBundle. Тогда у моего BlogBundle:Post будет поле author, которое ссылается на UserBundle:User. Разве это не противоречит цели Bundles? Я не могу поменять другой UserBundle в? Как я могу сделать это правильно? Или это лучшее, на что оно может пойти?

Ответы [ 3 ]

6 голосов
/ 26 декабря 2011

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

doctrine_mongodb:
    document_managers:
        default:
            mappings:
                model:
                    type: annotation
                    dir: %kernel.root_dir%/../src/MyApp/Model
                    prefix: MyApp\Model\
                    alias: Model

Конфигурация для ORM будет выглядеть аналогично.

3 голосов
/ 26 декабря 2011

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

Мне кажется интересным, что даже некоторые компоненты Symfony2, которые должны быть автономными библиотеками, имеют зависимости.Например, класс HttpKernel зависит от классов из компонентов HttpFoundation и EventDispatcher.

В вашем примере, если вам нужно поменяться местами в другой UserBundle, вам придется взятьнеобходимые шаги, чтобы гарантировать, что ваша BlogBundle зависимость все еще выполняется.Это может означать, что вам нужно провести рефакторинг.

Итак, назначение связок не побеждено, потому что одно ссылается на другое.Связки по-прежнему выгодно использовать, даже если они не всегда отсоединены на 100%.

0 голосов
/ 27 декабря 2011

Ну, в контексте другого приложения можно не связывать данный пост в блоге с человеком / пользователем, а с группой. Чтобы ваш код был максимально переносимым, я думаю, вам следует немного абстрагироваться от сценария. Отношения были бы неприемлемы. С другой стороны, личность владельца.

Итак, представьте, что у данного поста в блоге есть владелец. В контексте, если другое приложение со своими собственными пакетами, идентификатором владельца может быть группа, пользователь, внешний источник и т. Д.

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

...