2017-01-21 29 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

我很抱歉如果我没有尝试这样做,但我不想污染随机测试的packagist(我不知道我是否被允许这么做......) – Wes

+0

您可以创建另外3个虚拟软件包并自己尝试。审查你的设计以防止这个依赖链应该是首选的方式。 –

+0

从作曲家的角度看,软件包不是“依赖”,而是形式应用程序。下载不依赖于以前下载的文件,如“我无法下载,因为我需要先选择”。 – shudder

回答

1

一个更广泛的,不是PHP特定的答案在这里:循环依赖是从来没有一个好主意。

你会发现,为了给它们一个有用的结构,你将它们“分离”成不同的包/模块/你的名字。创建一个“模型”,帮助您处理代码的复杂性。

换句话说:您要定义一个architecture。在设计中,循环依赖通常被视为“难闻的气味”。

因此,你不应该问“它会工作吗?”,但“有没有更好的方法来处理这个问题?”