PHP Composer - 如何与多个供应商合作?

时间:2014-04-22 22:14:30

标签: php composer-php

我正在开发的项目需要使用来自多个第三方的PHP SDK。其中两个是Amazon Web Services和Google API Client(适用于Google+),它们都使用Composer来管理文件/依赖项。我不确定如何最好地设置代码/结构,因为我不需要同时加载AWS和Google。我可能需要在一个区域使用AWS而在另一个区域需要Google,所以我不想每次都自动加载所有内容,并且从那时我不需要额外的库。现在我的结构设置如下:

  • awscode.php
  • googlecode.php

    • composer.json
    • composer.lock
    • 供应商
      • autoload.php
      • AWS
      • 谷歌

因此,Composer相关的所有内容都在共享的composer.json文件中,以及单个供应商目录中的所有供应商文件。但是,我似乎无法找到一种方法来加载说AWS。它希望我从我能说的内容中使用autoload.php,这似乎想要加载所有内容。

如果我想控制每个库,是否需要将其设置得更像?

  • awscode.php
  • googlecode.php
    • AWS
      • composer.json
      • composer.lock
      • 供应商
        • autoload.php
        • AWS
    • 谷歌
      • composer.json
      • composer.lock
      • 供应商
        • autoload.php
        • 谷歌

我显然是Composer的新手,以及如何最好地利用它,并希望确保我为我的情况和未来的管理设置最佳方式。

2 个答案:

答案 0 :(得分:3)

使用Composer时,它只会在代码中实际调用类时加载类。据我所知,这使用PHP spl_autoload_register

因此,在回答您的问题时,不会有额外的重大开销(如果有的话)。

答案 1 :(得分:1)

自动加载意味着当您第一次使用该类时,会读取定义类的文件。

您应该将所有项目依赖项包含在一个composer.json中,它们不会被加载到您不能使用它们的文件中。