Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Composer-如何与多个供应商合作?_Php_Composer Php - Fatal编程技术网

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

PHP Composer-如何与多个供应商合作?,php,composer-php,Php,Composer Php,我正在从事的项目需要使用来自多个第三方的PHPSDK。其中两个是Amazon Web服务和Google API客户端(用于Google+),它们都使用Composer来管理文件/依赖项。不过,我不确定如何最好地在代码/结构方面进行设置,因为我不需要同时加载AWS和Google。我可能在一个领域需要AWS,在另一个领域需要Google,所以我不想每次都自动加载所有内容,并从我不需要的库中获得额外的开销。现在我的结构设置如下: awscode.php googlecode.php libs co

我正在从事的项目需要使用来自多个第三方的PHPSDK。其中两个是Amazon Web服务和Google API客户端(用于Google+),它们都使用Composer来管理文件/依赖项。不过,我不确定如何最好地在代码/结构方面进行设置,因为我不需要同时加载AWS和Google。我可能在一个领域需要AWS,在另一个领域需要Google,所以我不想每次都自动加载所有内容,并从我不需要的库中获得额外的开销。现在我的结构设置如下:

  • awscode.php
  • googlecode.php
  • libs
    • composer.json
    • 作曲家洛克
    • 卖主
      • autoload.php
      • 自动气象站
      • 谷歌
因此,与Composer相关的所有内容都在一个共享的Composer.json文件中,所有供应商文件都在单个供应商目录中。但是,我似乎找不到一种方法来加载AWS。据我所知,它希望我使用autoload.php,它似乎希望加载所有内容

如果我想控制每个库,是否需要像这样设置它

  • awscode.php
  • googlecode.php
  • 自由基
    • 自动气象站
      • composer.json
      • 作曲家洛克
      • 卖主
        • autoload.php
        • 自动气象站
    • 谷歌
      • composer.json
      • 作曲家洛克
      • 卖主
        • autoload.php
        • 谷歌

显然,我对Composer以及如何最好地利用它是个新手,我想确保我正在为我的情况和未来的管理设置一种最好的方式。

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


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

自动加载意味着定义类的文件在您首次使用该类时被读取


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

Oh nice。因此,只要确认我当前设置它的方式(列出的第一层次结构)是最好的方法,而且Composer只会在调用这些类时加载它实际需要的内容?理想情况下,Composer.json、Composer.lock和vendor目录应该位于项目的根目录中,但我想这也取决于首选项。但是,是的,第一种方法是最好的。让作曲家第一次运行有时会有点混乱和烦琐,但从长远来看,它会有很大帮助。特别是在将来获得库的更新时。非常好。非常感谢您回答我最初的问题并提供更多信息。我会坚持原来的方式!您确定仍然无法从不同的供应商目录获取包吗?我刚刚从两个目录中都包含了autoload.php,我觉得它很好用。