Composer 是安装 PHP 组件的工具,
而 composer.json 是安装 Composer 生成的文件,是安装组件时必不可少的文件,Composer需要根据这个文件中的信息进行查找、安装、自动加载 PHP 组件。composer.json 文件内容必须是有效的 JSON 数据
4-2 某描述器的composer.json
{
"name": "modernphp/scanner",
"description": "Scan URLs from a CSV file and report inaccessible URLs",
"keywords": ["url", "scanner", "csv"],
"homepage": "http://example.com",
"license": "MIT",
"authors": [
{
"name": "Josh Lockhart",
"homepage": "https://github.com/codeguy",
"role": "Developer"
}
],
"support": {
"email": "help@example.com"
},
"require": {
"php" : ">=5.6.0",
"guzzlehttp/guzzle": "^6.1"
},
"require-dev": {
"phpunit/phpunit": "^5.0"
},
"suggest": {
"league/csv": "^8.0"
},
"autoload": {
"psr-4": {
"Oreilly\\ModernPHP\\": "src/"
}
}
}
显然,这里内容有不少需要消化,下面我们来详细说明每个属性
属性说明
name 这是组件的厂商名和包名,二者之间使用 /
符号分隔。这个属性的值会在 Packagist 中显示。
"name":"modernphp/scanner",
description 这个属性的值是几名话,简要说明组件。这个属性的值会在 Packagist (1)
中显示。
"description":"Scan URLs from a CSV file and report inaccessible URLs",
keywords 这个属性的值是几个描述组件的关键字。这些关键字用于帮助别人在 Packagist 中找到这个组件。
"keywords":["url","scanner","csv"],
homepage 这是组件网站的 URL。
"homepage":"http://example.com",
license 这是 PHP 组件采用的软件许可证。记住,发布代码时一定要使用许可证。(http://choosealicense.com 对软件许可做了详细说明)
"license":"MIT",
authrs 这是一个数组,包含项目中每个作者的信息。每个作者的信息至少要包含姓名和网站URL。
"authors":[
{
"name": "Josh Lockhart",
"homepage":"http://github.com/codeguy",
"role":"Developer"
}
],
support 这是组件的用户获取技术支持的方式。我喜欢设为电子邮件地址和支持讨论组的URL。你也可以列出 IRC频道等。
"support":{
"email":"help@example.com"
},
require 这个属性列出组件自身依赖的组件。我们应该列表每个依赖的厂商名和包名,以及最小版本号。我还喜欢列出组件需要的最小PHP 版本号。在开发环境和生产环境都会安装这个属性中列出的全部依赖。
"require":{
"php":">=7.2.0",
"guzzlehttp/guzzle":"~5.0"
},
require-dev 这个属性的值与 require 属性类似,不过列出的是开发这个组件所需的依赖。例如,我通常会把 phpunit 当做开发依赖,以便组件的其他贡献者能编写和运行测试。这些依赖只在开发时安装,在生产环境中使用时不会安装。
"require-dev":{
"phpunit/phpunit":"~4.3"
},
suggest 这个属性的值与 require 属性类似,不过只是建议安装的组件,以防与其他组件合作时需要。与 requeire 属性不同,这个对象的值是自由的文本字段,用于描述这个建议安装的组件。 composer 不会安装这些建议安装的组件。
"suggest":{
"league/csv":"~6.0"
},
autoload 这个属性告诉 composer 的自动加载器如何自动加载这个组件。我建议使用符合 PSR-4 规范的自动加载器,如示例4-2所示。在psr-4属性中,我们要把组件的命名空间前缀与相对组件根目录的文件系统路径对应起来。这样,我们的组件就符合PSR-4自动加载器标准了。在示例-2中,我把 Oreilly\ModernPHP 命名空间与 src/ 目录应对了起来。要对应的命名空间必须以两个反斜线 \\
结尾,防止与命名空间中有类似字符序列的其他组件冲突。在这个示例中,如果实例化虚构的Oreilly\ModernPHP\Url\Scanner 类,composer 会自动加载 src/Url/Scanner.php 文件。
"autoload":{
"psr-4":{
"Oreilly\\ModernPHP\\":"src/"
}
}
说明:(1)
Packagist : 2. 是查找PHP组件的地方 (https://packagist.org),里面列出大量优秀的 PHP 组件 。而compsoer 是安装PHP组件的工具。
建议: composer 完整格式参见 http://getcomposer.org。
信息参考 : Modern PHP