Composer是PHP的依赖管理工具,诞生的时间比较晚,在PHP5.3才正式发布。发布之后不温不火,支持的包也少,一度被认为是下一个pecl(比较失败的工具)。最近几年结合PSR(PHP Standards Recommendation)慢慢的被大家接受,虽然PHP程序员让人觉得天马行空,但对规范还是推崇备至。
现在,如果要学习PHP必须要会使用Composer,否则会偏离正确的学习路线。因为Composer中集成了几乎所有PSR规范,不按规范学习,家人两行泪。
Composer的发展历史
5年前,要是问PHP程序员Composer是什么?很多人不一定答的上。要是问phpize是什么?都知道是安装扩展的。而到今天PHPer每天都要使用Composer,回头看看这5年到底发生了什么?
- Composer包太少,直到今天支付宝和微信的SDK包还不支持Composer。
- 这种包管理方式有学习成本,旧方式一句include走天下。
- 引入Composer后对代码的侵入性很大。
- 有phpize安装扩展程序够用了。
而今天的情况已经大不一样:
- 大家都按照PSR的规范在开发代码,Composer包越来越多。
- 受其他语言的影响,特别是npm和Cargo这种包管理方式的普及,一句
include
走天下的方式慢慢的成为了历史,现在写代码将不会再出现include
和require
(入口文件除外)。 - 在规范面前,一切阻碍都是纸老虎,侵入性问题也不再是问题。
- Composer现阶段无法替代phpize。
Composer的使用方法
安装Composer
1
2
3
4
5
6
7
8//unix and linux
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
//windows
C:\Users\username>cd C:\bin
C:\bin>php -r "readfile('https://getcomposer.org/installer');" | php
C:\bin>echo @php "%~dp0composer.phar" %*>composer.batComposer基本语法
使用下面四个基础命令就能很好的驾驭Composer。
1
2
3
4
5
6//初始化composer.json文件
composer init
//安装项目依赖文件
composer install
//更新项目依赖文件
composer updateComposer特殊设置
在国内首先要解决的就是网络问题,下面是多个Composer源,推荐使用aliyun的Composer源,最稳定。
- 阿里云 https://mirrors.aliyun.com/composer/
- 华为云 https://mirrors.huaweicloud.com/repository/php/
- 腾讯云 https://mirrors.cloud.tencent.com/composer/
- 安畅网络 https://php.cnpkg.org
上海交大 https://packagist.mirrors.sjtug.sjtu.edu.cn
配置方法如下,以阿里云为例
1
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
特别说明
版本号通配符(非常重要)
在composer.json文件中需要设置依赖包的版本号,不同的通配符会导致
composer update
更新不同版本的依赖包。~1.0.1
表示 >=1.0.1 < 1.1.0
^1.0.1
表示 >=1.0.1 < 2.0.0假如设置的是
~1.0.1
,如果这个包的下一个版本号是2.0.1
,将永远无法更新。composer.lock锁文件一定要提交到代码库中
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件,这将锁定改项目的特定版本。
有composer.lock后,任何人拿到你的项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。
如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。这时生产环境的版本可能和你本地的版本不一致,导致错误发生。
最后
PHP教程系列写到第五篇了,其他四篇如下,有兴趣的朋友可以看看。