安装 composer 命令行工具
# 下载
curl -sS https://getcomposer.org/installer | php
# 移动且重命名
mv composer.phar /usr/local/bin/composer
实例操作记录:
bogon:~ zhoumengkang$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.6.4) successfully installed to: /Users/zhoumengkang/composer.phar
Use it: php composer.phar
bogon:~ zhoumengkang$ mv composer.phar /usr/local/bin/composer
使用镜像
因为访问国外比较慢,可以使用阿里云
https://developer.aliyun.com/composer 提供的镜像。
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
原理是修改了家目录下面的./.composer/config.json
实例操作记录:
bogon:~ zhoumengkang$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
bogon:~ zhoumengkang$ cd .composer/
bogon:.composer zhoumengkang$ ls
auth.json cacert.pem cache config.json keys.dev.pub keys.tags.pub
bogon:.composer zhoumengkang$ cat config.json
{
"config": {},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
bogon:.composer zhoumengkang$ pwd
/Users/zhoumengkang/.composer
在项目中使用
直接在命令行引入第三方包
进入一个项目直接执行compser
命令即可,比如我们要安装phpunit
包,只需要在项目目录下执行以下命令即可。
composer require --dev phpunit/phpunit ^6.2
实例操作记录:
bogon:untitled4 zhoumengkang$ composer require --dev phpunit/phpunit ^6.2
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 28 installs, 0 updates, 0 removals
- Installing sebastian/version (2.0.1): Downloading (100%)
...
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
Writing lock file
Generating autoload files
不需要预先配置composer.json
,如果没有该文件,则自动生成该文件。如下
{
"require-dev": {
"phpunit/phpunit": "^6.2"
}
}
如果该文件已经存在,则会把配置添加到该文件中去,这样当你删除了vendor
目录,就可以使用更新命令来重新生成。
根据composer.json
来安装第三方包
composer install
或者
composer update
只想安装或者更新某个特定的库,不想更新它的所有依赖,则可以使用
composer install foo/bar
composer update foo/bar
实例操作记录:
bogon:untitled4 zhoumengkang$ ls
composer.json composer.lock vendor
bogon:untitled4 zhoumengkang$ rm -rf vendor/
bogon:untitled4 zhoumengkang$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 28 installs, 0 updates, 0 removals
- Installing webmozart/assert (1.3.0): Loading from cache
...
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
Generating autoload files
注意事项
composer.lock
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定该项目的特定版本。
请提交你应用程序的 composer.lock (包括 composer.json)到你的版本库中。这是非常重要的,因为 install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。
自动加载优化
composer dump-autoload --optimize
能够大大减少系统自动加载时间。