PHP Composer 内网组件开发

第一步,先创建代码目录,进入代码目录,执行 composer init 然后一直回车确认,会生成 composer.json 文件,内容如下

swift 复制代码
{
    "name": "nick/test",//根据自己的用户名或组织名称修改
    "autoload": {
        "psr-4": {
            "Nick\\Test\\": "src/" // PSR4 自动加载机制,对应命名空间,自己修改
        }
    },
    "authors": [
        {
            "name": "Nick",
            "email": "nick_php@163.com" // 如果是公司内部的,可以删除作者信息
        }
    ],
    "require": {}
}

修改后的内容,之前在公司内部的组件,可以参考一下

swift 复制代码
{
    "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 规范文档:learnku.com/docs/psr/ps...

第二步,创建目录

scss 复制代码
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,添加下面的内容。

json 复制代码
"repositories": [
  {
    "type": "gitlab",
    "url": "内部的 git 仓库地址"
  }
]

repositories 有两种写法

  1. 数组,按照顺序执行
json 复制代码
{
    "repositories": [
         {
             "type": "composer",
             "url": "https://mirrors.aliyun.com/composer/"
         },
         {
             "type": "composer",
             "url": "https://packagist.org/"
         }
    ]
}

  1. 对象,JSON对象表示法。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」,然后提交即可。

相关推荐
Ticnix2 小时前
RAG 烂大街?烂大街的只是那条流水线——真正的分水岭在这五处
后端·python·agent
Wx-bishekaifayuan2 小时前
springboot社区扶贫救助管理系统13300-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
DolphinDB2 小时前
数据库自带 Agent:10 分钟搭起 DolphinX-Web 数据入库与分析框架
后端·架构
弈栈录2 小时前
基于 Spring Boot 构建生产级 AI 应用平台
后端·面试·架构
小小张说故事2 小时前
LightGBM 入门指南:更快的梯度提升树,Python 实战
后端·python·机器学习
站大爷IP2 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
后端
Ticnix2 小时前
RAG 检索不准,九成的锅不在向量——不同文件,就该有不同的入库方案
后端·python·agent
福兮说3 小时前
Go 优雅退出:Shutdown 之后,后台 goroutine 还在跑(四个实测的坑)
后端·go
用户298698530143 小时前
Python 文档格式转换:Word 转 EPUB 实践
后端·python·api
德先生3 小时前
1.1-main.cpp入口解剖
后端