PHP组件中必须有composer.json文件,而且这个文件的内容必须是有效的JSON,Composer会使用这个文件中的信息查找、安装和自动加载PHP组件。composer.json文件还包含组件在Packagist目录中的信息。
{
"name": "modernphp/scnner",
"description": "Scan URLs 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.4.0",
"guzzlehttp": "~5.0"
},
"require-dev": {
"phpunit/phpunit" : "~5.0"
},
"suggest": {
"league/csv": "~6.0"
},
"autoload": {
"psr-4": {
"Oreilly\\ModernPHP": "src/"
}
}
}
1. name
这是组件的厂商名和包名,二者之间使用/符号分隔。这个属性的值会在Packagist中显示。
2. description
这个属性的值是几句话,需要说明组件。这个属性的值会在Packagist中显示。
3. keywords
这个属性的值是几个描述组件的关键字。这些关键字用于帮助别人在Packagist中找到这个组件。
4. homepage
这是组件的网站url
5. license
这是PHP采用的软件许可证。发布代码时一定要使用许可证。
6. authors
这是一个数组,包含项目中每个作者的信息。每个作者的信息至少要包含姓名和网站URL
7. support
这是组件的用户获取技术支持的方式。
8. require
这个属性列出组件自身依赖的组件。我们应该列出每个依赖的厂商名和包名,以及最小版本号。包含PHP的最小版本号。开发环境和生产环境都会安装这个属性中列出的全部依赖。
9. require-dev
这个属性的值与require类似,不过列出的是开发这个组件所需的依赖。
10. suggest
这儿属性的值与require属性类似,不过只是建议安装的组件,以防与其他组件合作时需要。
11. autoload
这个属性告诉composer的自动加载器如何自动加载这个组件,建议使用符合psr-4规范的自动加载器。在psr-4属性中,我们要把组件的命名空间前缀与相对组件根目录的文件系统路径对应起来。这样我们的组件就符合psr-4自动加载器的标准了。要对应的命名空间必须以两个反斜线(\)结尾,防止与命名空间中有类似字符换序列的其它组件冲突。
摘选自《Modern PHP》第68-70页