Composer是基于PHP平台的包依赖管理器,类似于Node平台的NPM。Composer支持Unix/Linux/OSX/Windows等系统,本文以在Windows系统下使用为例,具体安装方法可参考:https://getcomposer.org/doc/00-intro.md。
在Windows安装Composer成功后,就可以通过CMD在项目目录下执行各项composer
命令。
配置文件及基本命令
composer.json
在项目中开始使用Composer,需要一个composer.json
配置文件,该文件用来描述项目的元信息及引用的包依赖关系,使用require
声明需要安装的包,如下:
{
"require": {
"monolog/monolog": "1.0.*"
}
}
然后执行 composer install
命令,则require
中声明的包便会默认下载到项目根目录下的vendor
文件夹下,并自动生成 composer.lock
文件。如果此时项目中已有该版本的包,则不会重复安装。
composer.lock
该文件用来约束各个包的版本,保证不同的开发人员在项目中使用的包的版本一致。如果在执行 install
命令时,composer.json
和composer.lock
中的包及其版本信息不一致,则Composer会给出警告;如果包及其版本信息均一致,则不会重复安装。
如果要增加新的包或对已有包的版本进行变更,则可以执行 composer update
命令,相当于删除 composer.lock
文件并执行了 install
命令。
单独执行require和update命令
如果只是相对某一具体的包进行安装或更新,也可以直接执行 require
和 update
命令,如下:
composer require monolog/monolog: 1.0.0
composer update monolog/monolog: 1.0.2
由于网络等原因,在执行install命令的过程中,经常会在Updating dependencies (including require-dev)时卡住,可考虑使用Composer中国全量镜像。
Autoloading
Composer会自动生成 vendor/autoload.php
文件,实现对类的自动加载,在项目文件中导入该文件,即可实现对Composer安装包类的自动加载,如:
require __DIR__ . '/vendor/autoload.php';
$log = new Monolog\Logger('name');
...
可以在 composer.json
中添加自定义的自动加载信息,如添加命名空间到目录结构的映射:
"autoload": {
"psr-4": {
"App\\": "src"
}
}
版本符号
* : 最新版
>=1.0: 大于等于1.0的最高版本
>=1.0 <2.0:大于等于1.0且小于2.0的最高版本
1.0 - 2.0:1.0至2.0之间的最高版本
1.0.*:>=1.0且<1.1的最高版本
~1.2:>=1.2且<2.0的最高版本
~1.2.3:>=1.2.3且<1.3.0最高版本
^1.2.3:>=1.2.3且<2.0.0的最高版本