PHP Composer 内网组件开发
第一步,先创建代码目录,进入代码目录,执行 composer init
然后一直回车确认,会生成 composer.json
文件,内容如下
{
"name": "nick/test",//根据自己的用户名或组织名称修改
"autoload": {
"psr-4": {
"Nick\\Test\\": "src/" // PSR4 自动加载机制,对应命名空间,自己修改
}
},
"authors": [
{
"name": "Nick",
"email": "nick_php@163.com" // 如果是公司内部的,可以删除作者信息
}
],
"require": {}
}
修改后的内容,之前在公司内部的组件,可以参考一下
{
"name": "test/php-common",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Test\\PhpCommon\\": "src/"
}
},
"require": {
"php": "^8.2",
"laravel/framework": "^9.0 || ^10.0 || ^11.0"
}
}
PSR4 规范文档:PSR-4 自动加载规范
第二步,创建目录
test
├── src/ // 组件源代码目录
├── tests/ // 单元测试文件目录
├── composer.json // Composer 配置文件
├── README.md // 组件介绍及使用说明
└── LICENSE // 许可证文件,根据是否开源来写,如果是公司内部的,可以不需要
组件源码写在 src
目录内,和平时写代码一样,可以创建目录,文件,根据自己的需求写,遵循单一责则,不要一个组件包开发一大堆功能,瞎提要求的同事让他自己实现,不过多描述。
注意:单元测试不会操作数据库,不会发生网络链接,这些操作都是通过 Mock 实现。使用 PHPUnit
或者 Pest
实现单元测试。
README.md
文件写好组件提供了什么功能,怎么安装,怎么使用。
组件开发好后,在 gitlab
创建一个 git
仓库,提交代码,然后打 tag
。
发布版本要遵循语义化版本,v1.0.0
3位数字说明
第一位代表大版本,一般不建议,第二位代表新增功能,第三位代表修改 bug
语义化版本规范文档:semver.org/lang/zh-CN/
如何安装使用,在需要用组件的项目里面,找到 composer.json
文件,找到文件中的 repositories
,添加下面的内容。
"repositories": [
{
"type": "gitlab",
"url": "内部的 git 仓库地址"
}
]
repositories
有两种写法
- 数组,按照顺序执行
{
"repositories": [
{
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
},
{
"type": "composer",
"url": "https://packagist.org/"
}
]
}
- 对象,JSON对象表示法。JSON键/值对应被视为无序,因此无法保证一致的行为
{
"repositories": {
"foo": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
},
"packagist": {
"type": "composer",
"url": "https://packagist.org/"
}
}
}
然后在项目执行 composer require xxx/xxx
安装组件就可以使用了。
开源组件和公司内部类似,安装的使用都不需要在 composer.json
文件中加 repositories
,配置。
开源组件把代码提交到 GitHub
,需要多一步,把代码提交到 Packagist
。
Composer
安装包都是从 Packagist
源读取信息的,所以我们需要去注册我们的扩展包,别人才能安装。
如果你还没有 Packagist
账号,先注册一个,建议使用 GitHub
登录:
登录以后,点击顶部菜单栏 「Submit」 开始提交项目,填入我们 代码所在的 GitHub
的仓库 URL
,然后点 「Check」,然后提交即可。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: