在 PHP 中安装、使用 Composer 包管理工具
Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
0. 相关资源及概述
Composer官网 https://getcomposer.org
Composer Github 地址 https://github.com/composer/composer
Composer中国镜像 http://www.phpcomposer.com
阿里云全量镜像(👍 推荐):https://developer.aliyun.com/composer
Packagist
它是 Composer 主要的一个包信息存储库,包开发者将具体代码托管到 Github 上,将包信息提交到 Packagist 上,这样使用者就可以通过 Composer 去使用。它的执行顺序如下:
- 首先,Composer 根据本地定义的
composer.json
信息去查询 Packagist; - 其次,Packagist 根据
composer.json/package.json
信息解析,最终对应到Github 仓库; - 最后,Composer 基于 Github 仓库上的
composer.json
下载代码到本地。
- 首先,Composer 根据本地定义的
composer.json
这是 Composer 的核心,主要用来配置 Composer 的执行规则。
自动加载
Composer 基于 PHP 命名空间和 PSR-4 标准开发、集成了一个自动加载器。
1. 安装配置
1.1. 下载 composer.phar
Linux / Unix / OSX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 下载
➜ curl -sS https://getcomposer.org/installer | php
# 如果上面的 curl 命令出错或无法使用,可用 php 命令代替
➜ php -r "readfile('https://getcomposer.org/installer');" | php
# ----- 下面是其它的一些参数 -----
# --install-dir 指定下载目录
➜ curl -sS https://getcomposer.org/installer | php -- --install-dir=bin
# --filename 指定下载成功存放的 composer 文件名
➜ curl -sS https://getcomposer.org/installer | php -- --filename=composer
# --version 下载指定版本的 composer
➜ curl -sS https://getcomposer.org/installer | php -- --version=1.0.0-alpha8Windows
方式一:使用安装器 👍
下载、运行 Composer-Setup.exe ,将自动下载 composer 并配置好相关环境变量,之后可直接使用命令 composer
方式二:点击这里手动下载
1.2. 配置
下载得到 composer.phar 文件后,我们就可以通过如下命令来使用了
1 | # 查看 Composer 版本 |
为了更好的使用 Composer,在 Linux 系统下,我们可以通过如下方式简化命令:
1 | ➜ sudo mv composer.phar /usr/local/bin/composer |
⚠️ 注意:如果提示找不到命令之类,需检查系统环境变量设置中是否包含路径 /usr/local/bin
2. 基本使用
这里以安装一个二维码组件为例,包的标识为 endroid/qrcode
2.1. 安装依赖包
方式一:使用 composer require 命令
格式: composer require 包的标识(厂商名/包名)
1
2
3➜ mkdir -p ~/www/composer_demo
➜ cd ~/www/composer_demo
➜ composer require endroid/qrcode方式二:使用 composer install 命令
在项目根目录下编辑 composer.json 文件,通过 require 配置项目依赖的包,如下:
1
2
3
4
5{
"require": {
"endroid/qrcode": "^2.2"
}
}然后使用以下命令进行安装
1
➜ composer install
包安装好之后,目录结构如下
1 | ➜ tree -L 2 |
2.2. 使用安装的包
在需要使用包的 PHP 文件头部添加以下代码:
1 | require 'vendor/audoload.php'; |
现在参考组件的说明文档,开始使用吧!
3. 常用命令
更多详细命令介绍请访问这里或直接执行 composer commands help
3.1. composer init
以命令行交互方式创建 composer.json 并初始化项目的依赖、描述等信息,如下:
1 | ➜ composer init |
3.2. composer install
这是最常用的命令,Composer 会根据本地的 composer.json
安装需要的依赖包。
下载下来的包放入项目下的 vendor
目录中,同时将安装时候的包版本信息放入到 composer.lock
文件,以便锁定版本。
⚠️ 注意:
如果当前目录下存在
composer.lock
文件,它会从此文件读取依赖版本,而不是根据composer.json
文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。如果没有
composer.lock
文件,composer 将在处理完依赖关系后创建它。
3.3. composer update
为了获取依赖的最新版本,并且升级 composer.lock
文件
1 | # 项目目录(composer.json 所在位置)下执行 |
3.4. composer config
用以编辑 Composer 的一些基本设置
- 全局配置:
COMPOSER_HOME/config.json
- 非全局配置:当前项目的目录下
composer.json
3.5. composer create-project
从现有的包中创建一个新的项目。这相当于执行了一个 git clone
或 svn checkout
命令后将这个包的依赖安装到它自己的 vendor 目录。
此命令有几个常见的用途:
- 快速的部署你的应用。
- 检出任何资源包,并开发它的补丁。
- 多人开发项目,可以用它来加快应用的初始化。
默认情况下,这个命令会在 packagist.org 上查找你指定的包。
示例
1 | # 通过 Composer 下载、初始化 ThinkPHP5.x |
3.6. composer require
增加新的依赖包到当前目录的 composer.json
文件中,并且在添加或改变依赖时, 修改后的依赖关系将被安装或者更新。
1 | # 默认交互模式 |
3.7. self-update
将 Composer 自身升级到最新版本
1 | ➜ composer self-update |