所有的开发语言都有依赖库(依赖包,respository)的概念,php也不例外,但是除此之外php还有扩展(extention)的概念,这可能是其他语言没有的。
依赖库是使用php作为语言开发的第三方框架或者工具,比如laravel、ide-helper、guzzle等各种库。通过composer管理其依赖关系。composer安装库之后引入相关类即可使用。这和java、C#、nodejs世界中的依赖库的概念和使用方式完全相同。
php扩展是使用c/c++作为语言开发的第三方插件。一般需要手动编译并且在php.ini配置中引入和添加相关配置之后方可使用。比如常见的扩展有xdebug,zip,ssl,swoole等都是php扩展。
从代码层次的角度上理解扩展和类库的关系:扩展是对php的底层补充(某些扩展已经集成到了php内核中),而类库是在php之上实现的工具和框架。
PECL (PHP Extension Community Library),即PHP 扩展社区库。就是php扩展仓库。我们一般需要安装php扩展时,需要使用pecl命令安装,或者从pecl官网下载源码手动编译安装。pecl命令是pecl的管理工具,就像是composer命令是php包的管理工具一样。
PEAR 是(PHP Extension and Application Repository)即PHP扩展和应用仓库。
PEAR 和pecl的概念有些相同,关系有些微秒。总结来说:pecl和pear使用相同的技术,但是管理的内容不同(pecl使用pear的技术来管理扩展仓库)。pecl管理扩展,而pear则管理依赖包,而且pear在包管理领域已经被淘汰。所以pear当前的意义在于在技术上为pecl提供了支持而已。
composer是php的包管理工具,优点在于仅需要提供一个composer.json文件,申明需要用到的三方库,一个简单的命令就能将其依赖全部装好。也方便项目的部署和发布,因为只需要提供一个composer.json就行了。
热门评论