作曲家:需要图书馆的图书馆

时间:2017-05-18 03:05:04

标签: php composer-php

我正在尝试创建一个包含其他库的PHP库,我打赌我错过了一些基本的东西。

使用AWS PHP SDK作为指南,我想创建一个库,在使用Composer安装后,需要其他库,但需要整个类的范围(都来自当前库,并且需要库)只需使用require 'vendor/autoload.php;'即可获得。

设置它的基本要求是什么?是以特定方式配置composer.json,命名空间还是两者兼而有之?

1 个答案:

答案 0 :(得分:3)

您所描述的正是Composer的主要目的 - 定义可能需要并实现其他包的代码包。

使用AWS SDK作为指南,如果您查看提供所有Composer配置信息的composer.json文件,您将看到两个需要的块,一个标记为require,另一个标记为{{ 1}}:

require-dev

这是您定义库所依赖的其他包/库的方式。 "require": { "php": ">=5.5", "guzzlehttp/guzzle": "^5.3.1|^6.2.1", "guzzlehttp/psr7": "^1.4.1", "guzzlehttp/promises": "~1.0", "mtdowling/jmespath.php": "~2.2" }, "require-dev": { "ext-openssl": "*", "ext-pcre": "*", "ext-spl": "*", "ext-json": "*", "ext-dom": "*", "ext-simplexml": "*", "phpunit/phpunit": "^4.8.35|^5.4.0", "behat/behat": "~3.0", "doctrine/cache": "~1.4", "aws/aws-php-sns-message-validator": "~1.0", "nette/neon": "^2.3", "andrewsville/php-token-reflection": "^1.4", "psr/cache": "^1.0" }, 部分列出了安装库时必须安装的所有其他库。 require部分列出了在开发环境中工作时可能只需要的库,而且在生产环境中不需要这些库。

当您指定其他所需的库时,Composer将安装您的库,然后出去并且还需要您的库所需的库(然后是那些库需要的库,依此类推)。

还包括要包含的库,您会注意到版本号也包含在内,以确保兼容性。

添加新依赖项的最简单方法是在命令行中使用require-dev命令,在此处记录:https://getcomposer.org/doc/03-cli.md#require。如果您不完全了解该命令,该命令可帮助您搜索所需的软件包,并可自动为您解析最新版本(如果您需要/可以覆盖,可以覆盖)。

如果您希望仅使用开发依赖项,请在运行命令时添加composer require标志。

使用此命令,Composer将自动更新您的composer.json文件,将依赖关系下拉到本地计算机,并更新您的自动加载器。

除了--dev之外,您永远不需要做任何事情以确保自动加载依赖关系 - Composer将完成设置自动加载器所需的所有工作,因此您不需要,并将所有内容保持最新状态添加了新的依赖项。

以下是composer.json架构的完整文档:https://getcomposer.org/doc/04-schema.md。您将希望在项目的根目录中具有composer.json配置文件,因此您可以为项目(以及稍后需要您的库的任何其他人)配置composer。如果没有,可以使用require_once vendor/autoload.php命令以交互方式创建一个。有关该命令的文档,请访问:https://getcomposer.org/doc/03-cli.md#init

这是他们的基本使用指南,如果你还没有完成它:https://getcomposer.org/doc/01-basic-usage.md