composer是什么?

768684492400b1470aa7882b29d5c
前言
近两年PHP领域出现了一个新词composer(指挥家),这个词用来形容它的功能也的确是恰到好处,为什么呢?接触composer的时间也挺久了,最初是从Symfony2中第一次接触过它,今天我们就来说下composer是用来干嘛的。

名词解释
composer是一种包管理工具或者依赖管理工具,我们暂且就叫它包管理工具,首先将”包管理工具”这个词分成以下两个部分,包 and 管理工具。
包:在我们软件开发中,常常口述成“第三方库”、“插件”等,实际上就是一个小型的软件包。比如当我们的项目中需要“发邮件”的功能的时候,我们常用的做法是下载一个PHPMailer库,直接require ‘PHPMailer/PHPMailer.class.php’;就可以直接使用了。
管理工具:这个其实不难理解,在这里就是用来管理“包”的工具。

那么为什么需要包管理工具?
我猜,你可能会这么问,“直接下载了我想用的包,直接require进来就直接用了不就得了吗?我干嘛需要包管理工具呢?”,当然如此,而且这种大家早起常常用的做法很直截了当且方便易用,那么为什么需要composer这位仁兄?
1.我们的项目正在越来越大,越来与复杂
我们所开发和维护的项目正随着高速的迭代而逐日递增,而所需要的功能也越来越多,可能今天需要一个发邮件的功能,明天就需要一个下载Excel的功能,后天。。。
需求是永无止境的。
所以我们发现项目所需要的包越来越多了,已经多到了难以管理的地步。

2.PHPMailer升级了一个大版本可以向外星人发送邮件的功能,而我正好需要,那我能不能把它引入我的项目中呢?
XXX前天才出到1.0,过两个月迅速升级到了3.0,而我发现我还在用XXX1.0。我很不高兴,1.0的版本是在太逊了,性急的我直接下载了3.0的包直接引入到项目中来了。结果发现,我的项目玩不转,爆出了这样的错误:
XXXType:not adapt current version.(遇到这样的错误,偷着乐吧~)
我去,于是网上查了下,原来是OOO1.0与XXX3.0不兼容,于是我并没有将XXX3.0还原回去(还是不死心,一定要使用XXX3.0),我又下载了OOO3.0,结果这里不报错了,另一个地方又出现了YYY2.1与OOO3.0的不兼容,你好像觉得我陷入了死循环,最后一团乱麻,我只好git checkout –(撤销)了所有更改的文件,做了一场无用功。
我们不可忽视的是每一个包都会有“版本”,包与包之间的兼容性问题往往导致我们再做升级和维护的时候变得有心无力,而这种兼容性也可以叫做依赖性,比如XXX3.0依赖OOO的版本要>=3.0,这也就是为什么也叫它依赖管理工具的原因。

上面完全都是梗,认真你就输了。

那么,既然有这么多的问题出现,就需要解决啊,composer就在这种窘况下应运而生了,然而在我看来composer不光解决了包管理的问题,也同时促成了我们PHP向着更加规范性的道路前进。

composer的作用
1.在纷繁杂乱的项目中抽丝剥茧,合理有效地管理所需要的包以及包与包之间的依赖性
项目包管理

2.PHP领域自从出现了composer后,规定了许多包开发的规范,github上许多开源包都以composer的开发规范为基础,使得大家在项目中安装所需要的包越来越容易,比如以下一些规范
①composer规定了一套规范的autoload,使得项目引入第三方包轻松加愉快
②composer规定了包所存放的文件夹,如果你之前使用过composer来管理项目,一定会熟悉项目根目录下的vendor这个神奇的目录
③Psr,有关更多Psr相关的信息可以点击Psr简要介绍

就这么多
好了,基本的介绍也就这么多,
之前写过一篇文章,关于如何构建遵循composer规范包的文章构造自己的composer包,如果你也有开源精神,并且手确实痒痒,不妨用composer来构建你的开源包,让其他开发者更容易的使用你的项目。

参考网站:
composer国外官网:
https://getcomposer.org/
composer国内:
http://www.phpcomposer.com/

composer是什么?
Tags:     

发表评论

电子邮件地址不会被公开。 必填项已用*标注