composer工作原理:
这里经过几个步骤:
1.composer读取composer.json(这个文件手动建立,官网有格式),这个json是在当前执行composer目录的,如果目录下没有这个json文件,程序可以在安装模块的时候选择自动建立这个文件
{ "require": { "monolog/monolog": "1.0.*",(多模块个的话需要用到这个逗号) "monolog/monolog": "1.0.*" } }
官方原版的是这样的:
{ "require": { "monolog/monolog": "1.0.*" } }
2.composer通过读取到的json数据去Packagist.org获取各个包的包名、作者、下载URL等信息。下载URL经常是GitHub上面的,因为目录的代码大部分都托管在GitHub上面嘛.
3.将从Packagist.org获取到的元数据存放到当前目录的composer.lock中.
4.composer读取composer.lock中的元数据,根据元数据一次下载包,并且放到当前目录的vender目录里面.
composer有不少常用的命令,比如composer install 、composer update、composer require。这三个命令都是会下载php类库的,composer update 会将步骤1、2、3、4都执行一遍,所以下载的类库是composer.json配置中匹配搭配的最新类库,而composer install,只是执行步骤4。
composer require 会将配置写入composer.json,然后执行步骤1、2、3、4或许你会问,如何知道不同的包他们的配置是怎么写的,这个你就要去Packagist.org了,每个开源项目都会有安装和使用方法的。
我们一般安装使用composer的步骤是:
1.windows操作系统下首先下载安装文件: https://getcomposer.org/Composer-Setup.exe.安装的时候会有个目录的选择,选择你当前使用的php执行文件就行了.安装过程中要修改你的PHP.INI文件,其实就是在里面把php_openssl.dll的功能给打开了而已,安装完毕会提示你重启系统以便让系统环境生效.还有一种更简单的安装方法,就是只下载composer.phar可执行文件,运行这个文件可以实现与运行composer相同的效果,但是这样不会自己修改系统相关文件和环境变量,在这里就不采用这种方法了.
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