2017-01-21 5 views
0

Я пишу пакет A, который требуется другим пакетом B, который я сейчас не публикую. В какой-то момент A будет изменено, чтобы использовать себя B. Скорее всего, они должны быть одновременно в одном пакете, но я предпочел бы сохранить две вещи отдельно, только для чистоты и, что более важно, потому что B - это только зависимость от dev от A.Могу ли я иметь круговые зависимости в Composer?

package A requires-dev B 
package B requires A 

Мне любопытно, если это возможно. Я также интересно, если это то же самое для:

package A requires B 
package B requires A 

... и ...

package A requires B 
package B requires C 
package C requires A 

... или более сложные случаи. С какими проблемами я столкнусь?

спасибо.

+0

Прошу прощения, если я не пробовал это делать, но я не хочу загрязнять упаковщиков случайными тестами (я не знаю, разрешено ли мне это делать ...) – Wes

+0

Вы можете создать 3 других фиктивные пакеты и попробовать сами. Рекомендуется рассмотреть ваш дизайн, чтобы предотвратить эту цепочку зависимостей. –

+0

Пакеты не являются «зависимостями» с точки зрения композитора, а образуют приложения. Загрузка не зависит от ранее загруженных файлов, таких как «Я не могу загрузить это, потому что мне нужна первая эльза». – shudder

ответ

1

Более широкий, а не php-специфический ответ здесь: круговые зависимости никогда хорошая идея.

Вы видите, что вы «разделяете» вещи на разные пакеты/модули/вы-name-it, чтобы придать им полезную структуру. Создать «модель», которая поможет вам справиться со сложностью вашего кода.

Другими словами: вы хотите определить architecture. А круговые зависимости чаще всего воспринимаются как «плохой запах» в дизайне.

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

Смежные вопросы