Composer

PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

  • 拓展和包是两个非常相近的概念。在PHP世界里,一般可以这样理解和区分两者:拓展(extension)和模块(module)等价,是用C语言写的功能合集;包(package)和库(library)等价,主要是用PHP实现的功能合集;拓展以动态链接库(dll或so)的形式加载,包则是通过require/include方式加载。绝大部分时候,两者混用不会造成理解上的困难。
    常见的拓展包括GD、ZIP、XML、MySQLi、OPCache等,常见的包包括PHPMailer、PHPOffice、HTMLPurifier等。
  • PEAR和PECL
    在Composer流行之前,PEAR和PECL是更为PHP开发者所知的两个工具(社区)。PEAR是PHP拓展和应用仓库(PHP Extension and Application Repository)的缩写,官网http://pear.php.net ;PECL是PHP拓展社区库(PHP Extension Community Library)的缩写,官网http://pecl.php.net。
    两者的区别可用拓展和包来区分:PECL托管拓展,源代码多为C文件,例如APC、AMPQ等;PEAR托管包,功能用PHP实现,如PHP CodeSniffer、HTTP Request等;PEAR对应pear命令,PECL对应pecl命令,可用这两个命令安装和管理拓展和包(pear的build/pickle子命令也可以编译PECL中的拓展)。两者互为补充,官网以姐妹(sisters)形容两者的关系。
    PECL是官方拓展的补充,目前仍处于活跃状态,一些优秀的拓展有成为官方拓展的潜质。韩天峰大神的swoole拓展也托管在PECL中,国内名气非常高。相比之下PEAR已是明日黄花。PEAR2和Pyrus(下一代的PEAR包安装工具,基于PHP5.3+构建,官网http://pear2.php.net)的出现也未能挽救PEAR。PEAR没落伴随着本文主角Composer的兴起。
    PEAR的定位是“提供可复用的PHP组件”,以中心化的方式为开发者提供功能包。中心化发布的方式保证了代码的质量,同时带来维护上的不便:通过评审的包才能发布,包过时现象严重。PEAR安装的包是全局的,不能为单独项目安装依赖包,非特权用户不能自行安装依赖包。其他缺点还包括糟糕的依赖管理。随着Github的流行和Composer的出现,包管理进入Composer时代。PEAR已经完成其历史使命,可以安心的去了。

最后更新: 2018年07月27日 18:24

原始链接: http://paris-jee.github.io/2018/07/23/Composer/