我正在进行的项目需要使用来自多个第三方的PHP SDK。其中两个是Amazon Web Services和Google API客户端(适用于Google+),它们都使用Composer来管理它们的文件/依赖项。不过,我不知道如何最好地设置代码/结构,因为我不需要同时加载AWS和谷歌。我可能在一个领域需要AWS,在另一个领域则需要谷歌,所以我不想每次都自动加载所有内容,并从我当时不需要的库中获得额外的开销。现在我有这样的结构设置:
- awscode.php
- 谷歌代码.php
- libs
- composer.json
- composer.lock
- 供应商
- 自动加载.php
- aws
- 谷歌
因此,与Composer相关的所有内容都在一个共享的Composer.json文件中,所有供应商文件都在单个供应商目录中。但是,我似乎找不到一种方法来加载AWS。据我所知,它希望我使用autoload.php,它似乎想加载所有内容。
如果我想控制每个库,我需要把它设置得更像这样吗?
- awscode.php
- 谷歌代码.php
- libs
- aws
- composer.json
- composer.lock
- 供应商
- 自动加载.php
- aws
- 谷歌
- composer.json
- composer.lock
- 供应商
- 自动加载.php
- 谷歌
- aws
很明显,我对Composer以及如何最好地利用它还很陌生,我想确保我正在为我的处境和未来的管理设置它。
使用Composer时,它只在代码中实际调用类时才加载这些类。据我所知,这使用了PHP spl_autoload_register。
因此,在回答您的问题时,不会有显著的额外开销(如果有的话)。
自动加载意味着定义类的文件在首次使用该类时会被读取。
您应该将所有项目依赖项包含在一个composer.json中,它们不会加载到您不使用它们的文件中。