Composer包开发和本地测试
hanpy

Composer是php的包管理工具,可以快速安装、卸载、更新、搜索、依赖等。

一. 准备工作

创建项目目录和Composer包目录

首先需要创建两个空的文件夹,分别来当做项目根目录和composer包目录

1
2
3
.
├── test-package
└── test-project

二. Composer包目录

2.1 初始化Composer包

1
2
cd test-package
composer init

按照提示输入相关信息,比如包名、版本号、作者、描述等。
这个时候的composer.json文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "hanpy/uc-client",
"description": "test user center http client",
"authors": [
{
"name": "hanpy",
"email": "hanpengyu521@126.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"hanpy\\": "src/"
}
}
}

2.2 在包目录下面创建src目录

1
2
mkdir src
touch src/UserCenterClient.php

src/UserCenterClient.php 文件的内容

1
2
3
4
5
6
7
8
9
10
11
<?php

namespace hanpy;

class UserCenterClient
{
public function home()
{
return 'uc hello world!';
}
}

这个时候的目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
├── composer.json
├── src
│   └── UserCenterClient.php
└── vendor
├── autoload.php
└── composer
├── ClassLoader.php
├── LICENSE
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
└── autoload_static.php

三. 项目目录

3.1 添加依赖包以及修改repository

1
2
3
4
5
6
7
8
9
10
11
{
"require": {
"hanpy/uc-client": "dev-main"
},
"repositories": {
"hanpy/uc-client": {
"type": "path",
"url": "../test-package"
}
}
}

3.2 安装依赖包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
composer install

No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Dependency resolution completed in 0.000 seconds
Analyzed 99 packages to resolve dependencies
Analyzed 99 rules to resolve dependencies
Lock file operations: 1 install, 0 updates, 0 removals
Installs: hanpy/uc-client:dev-main
- Locking hanpy/uc-client (dev-main)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
Installs: hanpy/uc-client:dev-main
- Installing hanpy/uc-client (dev-main): Symlinking from ../test-package
Generating autoload files

目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.
├── composer.json
├── composer.lock
└── vendor
├── autoload.php
├── composer
│   ├── ClassLoader.php
│   ├── InstalledVersions.php
│   ├── LICENSE
│   ├── autoload_classmap.php
│   ├── autoload_namespaces.php
│   ├── autoload_psr4.php
│   ├── autoload_real.php
│   ├── autoload_static.php
│   ├── installed.json
│   └── installed.php
└── hanpy
└── uc-client -> ../../../test-package/

3.3 测试

test.php 文件内容

1
2
3
4
5
6
7
8
<?php

use hanpy\UserCenterClient;

require __DIR__ . '/vendor/autoload.php';

$client = new UserCenterClient();
echo $client->home();

运行结果如下:

1
2
php test.php
uc hello world!

3.4 使用git私有仓库

修改comoposer.json文件中的repositories配置

1
2
3
4
5
6
7
8
9
10
11
{
"require": {
"hanpy/uc-client": "dev-main"
},
"repositories": {
"hanpy/uc-client": {
"type": "git",
"url": "git@gitlab.com:hanpy/test-package.git"
}
}
}