Table of Contents:

composer的下载

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

其中的installer为php的代码,执行完上面的代码后,composer.phar就会被下载当前文件夹下。

composer使用

  1. 编写 composer.json配置文件,在其中声明依赖关系
  2. 使用php composer.phar install进行安装

注意点:
* composer会在满足条件的情况下去拉取最新的那份依赖

install和update的区别

什么时候使用update
当你修改了你的依赖关系,不管是新增了依赖,还是修改了依赖的版本,又或者是删除了依赖,

这时候如果你执行composer install的时候,是不会有任何变更的,但你会得到一个警告信息
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
有人可能会很好奇php是怎么知道我修改了依赖,或者composer.lock已经过期了。很简单,如果你打开composer.lock的话,
会发现其中有一个hash字段,这就是当时对应的那份依赖的哈希值。如果值不一致自然而然就知道发生了变更了。
这时候,你应该去通过composer update来更新下你的依赖了。

单独更新和安装
* composer update monolog/monolog 不影响别的已经安装的依赖,仅仅更新你修改的部分
* composer install monolog/monolog 单独安装一个包

文件的自动加载

除了库的下载,Composer 还准备了一个自动加载文件,它可以加载 Composer 下载的库中所有的类文件。 使用它,你只需要将下面这行代码添加到你项目的引导文件中:

require 'vendor/autoload.php';

安装单独的包

使用composer require 包名进行安装,安装后会把安装的包自动添加到composer.josncomposer.lock中。并且进行包的自动导入和加载。
下面以当时安装mycard支付为例

./composer require omnipay/common:v3.0.0 #后面可以指定安装的版本, omnipay-mycard 依赖于 omnipay/common
./composer require sunxvming/omnipay-mycard     # 安装mycard

包的冲突问题

比如A包依赖C包的版本为3.0,此时需要安装B包,而B包依赖C包的版本为2.0,此时存在依赖两个不同的C包的冲突情况,因此B包安装不会成功。

解决办法1:
将B包的github的仓库fork到自己的仓库,然后修改B的composer.json文件,修改里面的依赖的C包的版本,并把自己github上fork的B包上传到Packagist中。然后composer require的时候require自己的包。

参考链接