php-composer-入门

安装 composer

https://docs.phpcomposer.com/00-intro.html

1
curl -sS https://getcomposer.org/installer | php

配置 composer.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"require": {
"用户名/包名称": "版本号",
"monolog/monolog": "1.0.*",
"knowbox/susuan-common-libs": "^1.0",
},
"repositories": {
// 从哪里找到这个包
// 可以使用命令行的方式指定
// composer config repositories.knowbox/susuan-ocr-libs vcs git@gitee.com:knowbox_server_dev_group/susuan-ocr-libs.git
"knowbox/susuan-common-libs": {
"type": "vcs",
"url": "git@gitee.com:knowbox_server_dev_group/susuan-common-libs.git"
},
"knowbox/susuan-ocr-libs": {
"type": "vcs",
"url": "git@gitee.com:knowbox_server_dev_group/susuan-ocr-libs.git"
}
}
}

版本号

版本号语法

  1. 指定版本 1.0.2
  2. 范围 ~1.0 或 ^1.0

~ 和 ^ 的区别

1
2
3
 ~和^的意思很接近,在x.y的情况下是一样的都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子吧:
~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0 (小版本号)
^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0 (大版本号)

安装

composer install

  1. 下载项目到 vendor/用户名/包名
  2. 创建一个 composer.lock 项目

注:在 .gitignore 中加入 vendor, 将 composer.lock 加入版本库

composer.lock

如果包在 composer.lock 中能够找到,那么就不会去 composer.json 中去找。

所以如果有 composer.lock 文件时,可以保证项目的其他参与人员 composer install 的时候包的版本时一致的。


自动加载

项目加载时要加上这一个语句。

1
require(__DIR__ . '/../../vendor/autoload.php');
1
2
3
4
5
6
7
8
9
{
"autoload": {
"psr-4": {
// 命名空间 与 目录的对应关系
// 命名空间后面必须是两个反斜线
"Acme\\": "src/"
}
}
}

PSR-4 标准

PSR-4使代码更加规范,能够满足面向package的自动加载,它规范了如何从文件路径自动加载类,同时规范了自动加载文件的位置。

https://www.php-fig.org/psr/psr-4/

真正的 autoloader

image-20181011095916792


更新

composer update

根据 composer.json 中的版本匹配规则更新到最新版本(所有包)。并更新 composer.lock

composer update 用户名/包名

更新 composer.json 中指定的包。并更新 composer.lock


创建自己的包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"name": "knowbox/susuan-ocr-libs", // 用户名/包名 (如果不用发布为一个库的话,那么不用指定 name)
"description": "ocr common service", // 简介
"type": "library", //
"authors": [
{
"name": "Wu Danyang",
"email": "wudy1@knowbox.cn"
}
],
"autoload": {
"files": [
"Config/OcrCacheKey.php" // 自动加载的文件
],
"psr-4": {
"Ocr\\Common\\": "Common/" // 按照 psr-4 映射的命名空间与路径
}
},
"require": {
"php": ">=7.1", // 平台软件包版本
"yiisoft/yii2": "^2.0"
}
}

设置包的版本号

手动创建

1
2
3
{
"version": "1.0.0"
}

根据标签(tag) 或者分支名称创建

标签

对于每一个看起来像版本号的标签,都会相应的创建一个包的版本。它应该符合 ‘X.Y.Z’ 或者 ‘vX.Y.Z’ 的形式,-patch-alpha-beta-RC 这些后缀是可选的。在后缀之后也可以再跟上一个数字。

下面是有效的标签名称的几个例子:

  • 1.0.0
  • v1.0.0
  • 1.10.5-RC1
  • v4.4.4beta2
  • v2.0.0-alpha
  • v2.0.4-p1

分支

对于每一个分支,都会相应的创建一个包的开发版本。如果分支名看起来像一个版本号,那么将创建一个如同 {分支名}-dev 的包版本号。例如一个分支 2.0 将产生一个 2.0.x-dev 包版本(加入了 .x 是出于技术的原因,以确保它被识别为一个分支,而 2.0.x 的分支名称也是允许的,它同样会被转换为 2.0.x-dev)。如果分支名看起来不像一个版本号,它将会创建 dev-{分支名} 形式的版本号。例如 master 将产生一个 dev-master 的版本号。

下面是版本分支名称的一些示例:

  • 1.x => 1.x-dev
  • 1.0 (equals 1.0.x) => 1.0.x-dev
  • 1.1.x => 1.1.x-dev

其他

提高包下载速度

详见 composer 中国镜像:https://pkg.phpcomposer.com/

提高 yii2 install 速度

Yii2 composer install 的时候会加载一些无用的包

可以参考以下不安装依赖,提高 install 速度:

https://github.com/yidas/yii2-bower-asset

git tag

1
2
3
git tag -a ( -s -u )   tagname -m "message" # 打 tag

git tag -l 'v-*' # 列出 tag

参考文档

Composer 中文网