大型库的动态依赖关系

时间:2014-04-21 17:45:33

标签: php composer-php

我们说我有一个包含多个部分的库,比如A和B.

在应用程序中,我需要该库但仅使用A部分。这是通过应用程序中可以动态读取的配置设置来定义的。

现在A和B对其他包有不同的要求。

如果仅使用A,我怎么才能要求A依赖?

显而易见的答案是将该库拆分为两个库。但是图书馆目前尚未拆分,需要大量工作才能完全改变工作流程 - 这是我们不想要的。想想例如。 Zend Framework也只是一个单独的库。

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是从您的"要求"中删除A和B.部分并将它们添加到"建议"部分(包括简短描述):

{
    ...
    "suggest": {
        "a/a": "to be able to use X (1.*)",
        "b/b": "to be able to use Y (~1.3)"
    }
}

现在,当用户安装软件包时,它会收到一条显示建议软件包的消息:

package/package suggests installing "a/a": to be able to use X (1.*)
package/package susgests installing "b/b": to be able to use Y (~1.3)

安装软件包的用户现在应该确定他们是否也需要" a / a"或" b / b"。


虽然此解决方案是最常用和最简单的解决方案之一,但拆分包是更好的选择。另请参阅" There’s no such thing as an optional dependency"