前言Composer已经成为当今PHP生态系统中必不可少的组件。相信大部分人都用过别人的composer包,那么如何创建一个PHP组件并发布到packigist来把你的想法贡献给开源社区呢?确定厂商名和包名在开发PHP组件之前,首先要选择组件的厂商名和包名,用于区分该组件属于谁。建议供应商名称和包名称均使用小写字母。确保命名空间命名空间不必与包名一致,注意不要与其他组件命名空间重叠。生成composer.json文件,我们可以简单的使用composerinit来创建项目的composer.json文件,然后会提示你以问答的形式填写信息。以下“>”表示在交互过程中输入Information>composerinit欢迎使用Composer配置生成器此命令将指导您创建composer.json配置。包名称(/)[composertest/example]:#厂商名和包名>suntianxiang/cn-oauthDescription[]:>微信、支付宝、微博OAuth2客户端的一个库#详细信息作者[stx<334965556@qq.com>,ntoskip]:MinimumStability[]:>beta#下载时优先选择开发版或稳定版VersionPackageType(e.g.library,project,metapackage,composer-plugin)[]:>library#package类型,我们属于library,填写libraryLicense[]:MIT#opensourceprotocol你愿意吗以交互方式定义您的依赖项(需要)[是]?>no#你想交互地定义你的开发依赖(require-dev)吗[yes]?>no{"name":"suntianxiang/cn-oauth","description":"微信、支付宝、微博OAuth2客户端的库","type":"library","require-dev":{"phpunit/phpunit":"^6.5"},"license":"MIT","authors":[{"name":"stx","email":"334965556@qq.com"}],"minimum-stability":"beta","require":{"php":">7.0","guzzlehttp/guzzle":"^6.3"},"autoload":{"psr-4":{"CnOAuth\\":"src"}}}最后生成的composer会输出.json文件()implementscomponentfunctions现在我们需要实现组件的具体功能。在这一步中,我们需要携带构成PHP组件的类、接口和形状。写什么类,写多少,完全取决于PHP组件做什么。组件的文件组织如下:根目录:src/该目录包含组件的源代码(如PHP文件)tests/单元测试文件composer.jsonComposer配置文件README.md组件介绍、描述、使用、等等,markdown格式...如果还不清楚,可以参考一些优秀的组件仓库的组织结构版本控制在将组件发布到packagist之前,我们还需要将组件发布到公共代码仓库,比如github,并将编写的代码发布到github并创建一个release提交给packagist现在你可以将组件提交给packagist。登录packagist后,点击单机网页右上角的“提交包”按钮,然后在“RepositoryURL”中输入Git仓库的完整URL,点击站点上的“Check”按钮-独自的。组件创建完成后,我们可以在Github上创建一个钩子,在组件的仓库每次更新时通知Packgist。仓库中设置hook的方法请参考https://packagist.org/about#how-to-update-packages使用这个组件就万事大吉了!现在任何人都可以使用Comopser安装这个组件。composerrequire孙天祥/cn-oauth