通过本章节,我们将掌握Composer的基本用法,以帮助你在项目中管理各种第三方依赖库。我们不去追究详细的用法,对此有兴趣的可以参阅官方文档:https://docs.phpcomposer.com
Composer是什么?
Composer 是PHP的一个依赖管理工具。它能管理你的PHP项目所需要的所有依赖关系。也就是说,Composer 会将你的PHP项目需要的所有代码库(也叫包/package)、依赖项从网上全部拉取下来,放到一起进行管理。
为什么会出现这么个管理工具呢?这要从PHP的发展历史说起。
最开始,PHP是有一个库管理工具的,叫PEAR/PEAR2,不过因为各种原因,已经过时淘汰了。
言归正传,在2000开始那几年,如果一个项目,用到了一些第三方的库,通常我们使用require/include命令把库包含进来,基本上也没太大问题,日子这么凑合着过下去了。
PHP5.3之前的副作用:由于PHP5.3之前的版本没有namespace功能,导致require/include进来的类文件可能存在命名冲突的问题。
时间来到了2005年,逐渐开始PHP产生了各种框架,比如CakePHP、Symfony及Laravel等(为什么会产生各种框架,在此就不说了)。而框架的目的就是让大家在框架的基础上,安安静静的写需要的代码,而一些重复的库包(比如数据分页,文件上传等),则直接引进来供大家使用。然后这个时候就发现问题了,发现如果库太多了,管理起来则是相当的麻烦,设想一个如果你需要一个库:
1、去网站下载到本地->放入某个目录->require进来;
2、如果这个库又依赖另一个库,重复第1个步骤;
Python有pip,Nodejs有npm,而PHPer只能手动一个个这么操作,给人的感觉是既原始又滑稽。
于是,各个框架又各自建造了自己的库管理系统:
CodeIgniter has Sparks
FuelPHP has Cells
Laravel has Bundles
CakePHP has The Bakery
至此,每个框架都为自己的框架构建了独有的库管理工具。虽然同一个库,在不同框架被不同的方式管理者,有点浪费人力物力,但至少能用了。
时间来到了2011年,Composer诞生了,它实现了一键包安装、版本依赖解析、自动加载,是现代PHP的基石。从此PHP迎来了大统一时代。如今,不仅是框架,任何PHP项目,都可以使用Composer安装项目所需要的库包。
Composer有什么用?
Composer官网的回答:
a) 你有一个项目依赖于若干个库。
b) 其中一些库依赖于其他库。
c) 你声明你所依赖的东西。
d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
至此,如果你需要的功能,已经有人实现,那么只需要一行命令,即可让你在项目中使用。如果你觉得你实现了某个功能,也可以以包的形式发布给他人使用。Composer极大的改变了PHP的开发生态,促进了代码交流和社区发展。