composer工做原理:php
这里通过几个步骤:
1.composer读取composer.json(这个文件手动创建,官网有格式),这个json是在当前执行composer目录的,若是目录下没有这个json文件,程序能够在安装模块的时候选择自动创建这个文件thinkphp
{ "require": { "monolog/monolog": "1.0.*",(多模块个的话须要用到这个逗号) "monolog/monolog": "1.0.*" } }
官方原版的是这样的:json
{ "require": { "monolog/monolog": "1.0.*" } }
2.composer经过读取到的json数据去Packagist.org获取各个包的包名、做者、下载URL等信息。下载URL常常是GitHub上面的,由于目录的代码大部分都托管在GitHub上面嘛.windows
3.将从Packagist.org获取到的元数据存放到当前目录的composer.lock中.composer
4.composer读取composer.lock中的元数据,根据元数据一次下载包,而且放到当前目录的vender目录里面.ui
composer有很多经常使用的命令,好比composer install 、composer update、composer require。这三个命令都是会下载php类库的,composer update 会将步骤一、二、三、4都执行一遍,因此下载的类库是composer.json配置中匹配搭配的最新类库,而composer install,只是执行步骤4。url
composer require 会将配置写入composer.json,而后执行步骤一、二、三、4或许你会问,如何知道不一样的包他们的配置是怎么写的,这个你就要去Packagist.org了,每一个开源项目都会有安装和使用方法的。spa
咱们通常安装使用composer的步骤是:操作系统
1.windows操做系统下首先下载安装文件: https://getcomposer.org/Composer-Setup.exe.安装的时候会有个目录的选择,选择你当前使用的php执行文件就好了.安装过程当中要修改你的PHP.INI文件,其实就是在里面把php_openssl.dll的功能给打开了而已,安装完毕会提示你重启系统以便让系统环境生效.还有一种更简单的安装方法,就是只下载composer.phar可执行文件,运行这个文件能够实现与运行composer相同的效果,可是这样不会本身修改系统相关文件和环境变量,在这里就不采用这种方法了..net
2.系统重启后php运行目录和composer运行目录已经被自动加到系统环境变量当中去了.在dos下运行composer会有版本信息和可执行的指令显示出来,表示安装成功.
3.在项目根目录下新建composer.json文件,若是没有手动创建这个文件的话也能够在安装包的时候由系统本身创建.执行composer生成composer.lock文件.若是安装太慢能够把数据仓库改为国内全镜量的网址,能够提升下载速度.修改方式有两种:
第一种是修改全局参数:
修改前查看当前镜像的方式:composer config -gl。 修改后再查看一下确认是否安装成功。
composer config -g repo.packagist composer https://packagist.phpcomposer.com
第二种是只修改当前项目的配置, 先进入你的项目的根目录(也就是 composer.json
文件所在目录),而后执行以下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述操做会在你的composer.json文件最后添加如下内容(你也能够手动添加):
//下面两个红色的大括号是手动创建composer.json文件时手动加的,整个文件的内容为下面的代码就能够正常使用国内的镜像了
{
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
}
4.通常只有第一次安装的时候用composer install指令,其它时候都应该用composer require指令,这个指令若是没有指令安装哪一个包,系统会有提示让你选择搜索哪一个包。千万不要用composer updata指令,这个指令没有指定安装哪一个包的话会把你的全部包和相关的依赖文件都更新到新版本,会形成已开发系统的不稳定.composer.json和composer.lock都不要手动修改,须要修改的话用composer require指令修改并执行.例如升级某个模块及其依赖包的版本或者是安装新的扩展包.举个例子以下:
5.若是某个包不使用了须要删除的话,先用composer show 指令查看已安装的包的完整名称,而后用"composer remove 完整包名"来删除这个包,同时会把这个包的相关依赖文件及文件夹一并删除.
各类安装方式的简单解释:
composer install - 若有 composer.lock 文件,直接安装,不然从 composer.json 安装最新扩展包和依赖; composer update - 从 composer.json 安装最新扩展包和依赖; composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新; composer require new/package - 添加安装 new/package, 能够指定版本,如: composer require new/package ~2.5.
备注:若是某个包因版本问题没法安装,确认版本没问题后能够在安装的时候加上参数:--ignore-platform-reqs 忽略版本号安装。
参考文档:
快速入门: https://www.kancloud.cn/huizong/composer/284036
中文文档: https://www.kancloud.cn/thinkphp/composer/35669
官方元数据仓库: https://packagist.org/
中国全量镜像: https://pkg.phpcomposer.com/
正确的 Composer 扩展包安装方法: http://blog.csdn.net/xianglingchuan/article/details/51930960