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" } } }
|