将一个 PHP 项目的 SDK 封装成 Composer 包并发布的过程大致可以分为以下几个步骤。这个过程涉及到创建一个符合 Composer 规范的包,配置相关信息,并将其发布到 Packagist 或其他 Composer 仓库。以下是详细的步骤:
### 1. 准备 PHP SDK 项目
确保你的 SDK 项目结构合理,具有标准的目录结构。假设 SDK 项目的根目录如下:
```
/your-php-sdk/
│
├── src/ # 存放 SDK 源码
│ └── YourSdk.php
│
├── tests/ # 存放单元测试
│ └── YourSdkTest.php
│
├── composer.json # Composer 配置文件
└── README.md # 项目说明文件
```
### 2. 创建 `composer.json` 文件
`composer.json` 是 Composer 管理项目的配置文件。在你的 SDK 项目根目录下创建 `composer.json` 文件,定义包的基本信息和依赖关系。以下是一个 `composer.json` 的示例:
```json
{
"name": "vendor/your-php-sdk", // 你的包名,通常是 vendor/包名
"description": "A PHP SDK for your service", // 包的描述
"keywords": ["sdk", "php", "your-service"], // 关键字,便于搜索
"homepage": "https://github.com/your-username/your-php-sdk", // 项目的主页
"license": "MIT", // 许可协议,常见的有 MIT、GPL 等
"authors": [
{
"name": "Your Name", // 作者名
"email": "your-email@example.com" // 作者邮箱
}
],
"autoload": {
"psr-4": {
"YourNamespace\\": "src/" // 定义命名空间与目录映射
}
},
"require": {
"php": "^7.4|^8.0" // 依赖的 PHP 版本
},
"scripts": {
"test": "phpunit" // 配置测试命令
},
"config": {
"optimize-autoloader": true // 优化自动加载器
}
}
```
- `"name"`:这是包的名称,通常采用 `vendor/包名` 的格式。例如,`vendor/your-php-sdk`。
- `"autoload"`:使用 PSR-4 自动加载标准,指定了项目源代码的命名空间与文件路径映射。
- `"require"`:列出 PHP 的最低版本要求及其它依赖项。
### 3. 添加源代码和测试
确保在 `src/` 目录下有你的 SDK 源代码,并且在 `tests/` 目录下有相关的单元测试。例如:- **src/YourSdk.php**:
```php
<?php
namespace YourNamespace;
class YourSdk {
public function doSomething() {
return "Hello, World!";
}
}
```- **tests/YourSdkTest.php**:
```php
<?php
use PHPUnit\Framework\TestCase;
use YourNamespace\YourSdk;
class YourSdkTest extends TestCase {
public function testDoSomething() {
$sdk = new YourSdk();
$this->assertEquals('Hello, World!', $sdk->doSomething());
}
}
```
确保你已经安装了 PHPUnit 或其他测试框架,并能够通过命令行运行测试。
### 4. 本地测试包
在发布之前,建议先在本地安装并测试 Composer 包。你可以通过以下命令在本地安装并使用这个包:
```bash
composer install
```
或者你可以在另一个项目中通过以下方式引用本地的包:
```json
{
"repositories": [
{
"type": "path",
"url": "../your-php-sdk"
}
],
"require": {
"vendor/your-php-sdk": "*"
}
}
```
然后在另一个项目中运行:
```bash
composer update
```
### 5. 发布到 Packagist
将包发布到 [Packagist](https://packagist.org/),这是 PHP 的官方 Composer 包仓库。首先,你需要将代码推送到 GitHub 或 GitLab 等 Git 仓库中。
#### 5.1 创建 Git 仓库
将 SDK 项目推送到 GitHub 或 GitLab 等公共 Git 仓库。例如,推送到 GitHub 上的仓库:
```bash
git init
git remote add origin https://github.com/your-username/your-php-sdk.git
git add .
git commit -m "Initial commit"
git push -u origin master
```
#### 5.2 注册 Packagist
- 访问 [Packagist](https://packagist.org/) 网站,登录并点击右上角的 "Submit"。
- 提交你的 Git 仓库地址,例如:https://github.com/your-username/your-php-sdk。
Packagist 会自动检测你的仓库中的 `composer.json` 文件,并将其作为一个新的包发布。
### 6. 发布新版本
每次更新 SDK 后,你可以通过 Git 标签来发布新的版本。假设你要发布版本 1.0.0:
```bash
git tag 1.0.0
git push origin 1.0.0
```
Packagist 会自动从 Git 仓库获取版本信息,并将其发布为新版本。
### 7. 版本控制与更新
在你更新 SDK 并准备发布新版本时,记得更新 `composer.json` 中的版本号。例如:
```json
"version": "1.1.0",
```
然后通过 Git 标签发布新的版本:
```bash
git tag 1.1.0
git push origin 1.1.0
```
这会通知 Packagist 更新该版本。
### 8. 使用包
其他开发者可以通过 Composer 安装你的 SDK:
```bash
composer require vendor/your-php-sdk
composer require wdsphputils/wework
```
### 总结
将 PHP SDK 封装为 Composer 包并发布到 Packagist 主要包括以下几个步骤:
1. 编写 SDK 代码并组织项目目录。
2. 创建并配置 `composer.json` 文件。
3. 在本地测试 SDK 包。
4. 将 SDK 代码推送到 Git 仓库。
5. 提交到 Packagist 并发布。
6. 使用版本控制发布新版本。
通过这些步骤,你可以将 PHP SDK 封装成 Composer 包,供其他开发者轻松安装和使用。