很久就想写一个关于PHP组件的文章,但是由于时间问题,没有充分足够时间去详细了解。
今天抽空,整理一下这断断续续的细碎的知识(捂脸)。
首先,需要了解的内容:composer,组件。
PHP组件库:https://packagist.org
composer
composer简单的理解是组件包管理工具,正式理解为“A Dependency Manager for PHP”,来自官网(https://getcomposer.org),翻译为:PHP依赖管理。
composer版本,v1,v2,本人建议使用v2,具体安装和更新请参考官网手册,本人使用感受v2优点直接体现在访问,下载速度上。
组件(本人一直不理解,组件和插件到底有什么区别)
组件,是软件的一部分,软件的组成部分。组件就是对象,是对数据 和方法的简单封装。
插件,近乎组件,有统一接口。插件是一种遵循一定规范的应用程序接口编写出来的程序。可插拔。
composer构建PHP组件如下:
1. 命名空间:包含组件的厂商名和包名。
每个组件的名称都由全局唯一的厂商名和包名组成,以防止与其他组件有名称冲突(厂商名和包名都小写)。
这里有可能会误以为,组件的命名空间必须和组件的厂商名和包名一致。其实不然,组件使用的命名空间与组件的厂商名和包名无关。
厂商名和包名只是为了让packagist和composer识别组件。而组件的命名空间是为了在PHP代码中使用组件。
2. 目录结构:
src/
这个目录包含组件的源码(例如PHP类文件)
tests/
这个目录包含组件的测试
composer.json
composer配置文件。这个文件用于描述组件,还会告诉composer的自动加载器,把组件中符合PSR-4规范的命名空间对应到src/目录。
README.md
这个Markdown文件提供关于组件的信息,包括组件的名称,说明,作者,用法,贡献者指导方针,软件许可证和要感谢的人。
CONTRIBUTING.md
这个Markdown文件说明别人如何为这个组件做贡献
LICENSE
这个纯文本文件包含组件的软件许可证
CHANGELOG.md
这个Markdown文件列出组件每个版本的改动
3. composer.json
PHP组件中必须有composer.json文件,而且这个文件的内容必须是有效的JSON。
name:是组件的厂商名和包名,二者之间使用/分隔。这个属性会在packagist中显示。
description:组件的描述。这个属性的值会在packagist中显示。
keywords:这个属性是几个描述组件的关键字。这些关键字帮助别人在packagist中找到这个插件
homepage:组件的网站URL
license:组件采用的软件许可证。
authors:是一个数组,包含项目中每个作者的信息。每个作者的信息至少要包含姓名和网站URL
support:这是组件的用户获取技术支持的方式。可以设置为邮箱或者URL
require:这个属性列出组件自身依赖的组件。我们应该列出每个依赖的厂商名和包名,以及最小版本号。还可以列出组件需要的最小PHP版本号。
在开发环境和生产环境都会安装这个属性中列出的所有依赖
require-dev:这个属性的值与require属性类似,不过列出的是开发这个组件所需依赖。例如,通常会把单元测试phpunit当做开发依赖,以便组件的其他贡献者能编写
和运行测试,这些依赖只会在开发时安装,在生产环境中使用时不会安装
suggest:这个属性的值与require属性类似,不过只是建议安装的组件,以防与其他组件合作时需要。与require属性不同,这个对象的值是自有的文本字段,用于描述
每个建议安装的组件。composer不会建议安装这些组件的。
autoload:这个属性告诉Composer的自动加载器如何自动加载这个组件。建议使用符合PSR-4规范的自动加载器,在PSR-4属性中,我们要把组件的命名空间前缀
与相对根目录文件系统路径对应起来(说白了,就是命名空间的路径和文件夹的路径一致),这样我们的组件就符合PSR-4自动加载器标准了。
4. README文件
README文件通常是使用者最先阅读的文件。对托管在GitHub中的组件来说,更是如此。因此,在这个文件中我们需要提供如下信息(建议):
组件的名称和描述
安装说明
用法说明
测试说明
贡献方式说明
支持资源
作者信息
软件许可证
好了,创建一个PHP组件需要了解,大概就是这些,具体内容,请自行查阅!
实际操作如下:
两种方式,在目录下手动创建composer.json或者通过composer init命令行创建
仅提供命令行创建方式说明(如下图,是使用composer v2创建的):
步骤说明(回车进行下一步骤):
1. composer init 初始化
2. Package name 填写厂商名和包名
3. Description:填写组件描述
4. Author:填写组件作者信息
5. Minimum Stability:填写版本
6. Package Type:填写组件类型
7. License:填写软件协议
至此一个PHP组件的第一步工作完成,剩下的就是补充组件功能代码,具体组织方式自行规划,可参考现有组件组织方式!
Take your time!!!