Symfony Как вы огранизуете код в проектах?

hell0w0rd

Продвинутый новичок
Смысл вопроса в том, что в симфони есть прекрасная система бандлов. Но по ее идеологии каждый бандл должен быть независим, что в контексте проекта - почти не реально. То есть почти каждый зависит от части функционала другого.
Я не спрашиваю про абстрактные бандлы в вакууме, которые можно переиспользовать, типо популярных FOS* или HWIOAuth и подобных, а конкретно код проекта.
В итоге лично у меня получилось так, что бандл - просто неймспейс для конкретного куска логики.
Если взглянуть на packagist - ребята все свалили в один бандл.

В общем как делаете вы?
 

Absinthe

жожо
Некоторые бандлы могут зависеть от других. А от некоторых бандлов другие не зависят.
Обычно сервисов по 4-5 в бандле, группированных по задаче.
 

hell0w0rd

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

WMix

герр M:)ller
Партнер клуба
Потому как оно есть приложение и нет идеи, что бы вырезать, абстрактно описывая нечеловеческую проблематику возможно?
 

Вурдалак

Продвинутый новичок
hell0w0rd, ты можешь привести пример бандлов, которые «завязаны друг на друга в модельках»?
 

hell0w0rd

Продвинутый новичок
Да любой FooBundle и UserBundle. У UserBundle\Entity\User есть связь с FooBundle\Entity\Bar.
 

Вурдалак

Продвинутый новичок
Ну, если ты не можешь избавиться от связи юзера с Bar, то deal with it. Т.е. не всегда же обязательно делать двунаправленную связь.
 

hell0w0rd

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

Absinthe

жожо
hell0w0rd, если у тебя сервис A использует сервис B и, возможно, его DTO, то сервис B не должен работать с сервисом A и его DTO. Совсем. И так будет удобнее.
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
When Symfony 2.0 was released, most developers naturally adopted the symfony 1.x way of dividing
applications into logical modules. That's why many Symfony apps use bundles to divide their code into
logical features: UserBundle, ProductBundle, InvoiceBundle, etc.
But a bundle is meant to be something that can be reused as a stand-alone piece of software. If
UserBundle cannot be used "as is" in other Symfony apps, then it shouldn't be its own bundle. Moreover
InvoiceBundle depends on ProductBundle, then there's no advantage to having two separate bundles.
Ну вот и ответ на мой вопрос. http://symfony.com/doc/download-best-practices-book/ - 9 страница.
 

Вурдалак

Продвинутый новичок
А, ну это ж естественно. Бандл — это, например, фича «конкурс». По конкурс остальной части сайта знать не нужно (кроме, как я уже сказал, ссылок/render_esi в шаблонах). Я подумал, что у тебя ну прямо никак не получается избавится от этой зависимости.

UPD: а, так я и не говорил.
 
Последнее редактирование:

keltanas

marty cats
А как вам это? Перевел на такую структуру пару проектов. Показалось действительно удобнее.

 

vld

Новичок
keltanas, кеш и логи без разнице где, а удобнее потому что раньше была вложенность больше
 

keltanas

marty cats
vld, я даже уже привык писать bin/console вместо app/console.
В app console конфликтует с config из-за чего автокомплит в баше хуже работает :)
Да и остальные консольные скрипты складываю в bin/, что очень удобно выходит.
А в var вообще теперь можно всякий мусор кидать ))
если держать все в App то получится ларувель
не, все равно будет лучше ))
 
Сверху