PHP社区提供了多种扩展和包管理工具,包括Pecl、Pear、Pear2和Composer。在不了解的情况下使用这些工具难免会造成混淆,所以下面就对这些管理工具做一个简单的介绍。1.简介下面简单介绍Pear、Pearpackage、Pearinstaller、Pear2、Pyrus、Composer、Pecl。PearPear是PHPExtensionandApplicationRepository(PHP扩展和应用程序存储库)的缩写,它是PHP扩展和应用程序的代码存储库。Pear存储库代码分为多个包。每个Pear包都是一个独立的项目,有自己独立的开发团队、版本控制、文档和其他包依赖信息。Pear包以phar、tar或zip形式分发。Pear的包管理器是Pearinstaller,用于浏览和搜索Pear包,查看最新版本,下载Pear包。Pear2Pear2是下一代Pear存储库,在可用性、速度和安全性方面有所改进。Pear2的包管理器Pyrus是下一代Pear安装程序,用PHP编写并以phar格式分发。ComposerComposer是PHP中的应用程序级包依赖管理器。用于管理(安装/更新)项目中声明的依赖库。Composer的包信息仓库是Packagist。PeclPecl是ThePHPExtensionCommunityLibrary(PHP扩展社区库)的缩写。Pecl扩展库的封装是用C和C++编写的动态链接库扩展。编译安装后,通过php加载。载入内存。二、发布时间轴三、Mac安装使用PearPear安装主要是安装Pearinstaller和Pyrus这两个包管理器,然后通过包管理器安装其他Pear包。(1)Pearinstaller如果你安装的是PHP(>4.3.0),编译时没有使用“./configureflag--without-pear”选项,那么系统已经集成了Pearinstaller的安装。但是如果你安装了PHP(<4.3.0),那么你需要手动安装Pear安装程序。下载go-pear.phar文件$curl-Ohttps://pear.php.net/go-pear....全局安装Pear命令并安装一些Pear包$sudophp-ddetect_unicode=0go-pear。phar为安装配置Pear1)更改安装基础位置键入1并按Enter键入/usr/local/pear并按Enter2)更改二进制文件目录位置键入4并按Enter键入/usr/local/bin然后按Enter3)再次回车,设置为默认4)安装完成查看版本$pear-V安装Pear包名称为mypear$sudopearinstallmypear使用安装包mypear,因为Pear库中的包都是由PHP有,所以只需要在代码层手动require/include文件即可使用(2)PyrusPyrus需要phar、simplexml、libxml2、spl和pcre扩展才能正常工作,下载文件pyrus在PHP中默认开启(>5.3.0)。phar$wgethttp://pear2.php.net/pyrus.phar第一次使用,运行phppyrus.phar$phppyrus.phar$输入yes,然后回车$输入你安装包存放的位置/Users/my-project然后回车$安装完成查看版本$phppyrus.phar--version安装Pear包名为mypear$phppyrus.pharinstallmypear使用安装包mypear(1)因为包在Pearlibraryarecreatedby它是用PHP写的,所以你只需要在代码层手动require/include文件,但是require_once是不允许的(2)Pyrus可以使用自带的autoloader自动导入PeclPecl可以通过安装下载Pear'sPackageManager的管理方法和安装。安装成功后要使用Pecl扩展库,必须下载扩展库,编译安装,然后加载。并加载下载Pecl扩展库extname(1)通过Pear下载Pecl扩展库$peclinstallextname(2)官网下载:http://pecl.php.net/(3)SVN下载,大部分Pecl扩展库同样在SVN中$svncheckouthttp://svn.php.net/repository/pecl/extname/trunkextname编译安装(一)通过Pear下载编译共享Pecl扩展库extname$peclinstallextname这个过程下载extname源码编译,生成extname.so放在PHP的扩展库目录下。(二)通过phpize编译共享Pecl扩展库extname1.下载extname的源码2.进入extname目录$cdextname3.准备PHP扩展库的编译环境$phpize4.编译$./configure$make$makeinstallsuccessful安装并创建extname.so并将其放置在PHP的扩展库目录中。加载(1)通过php.ini加载extname.so1):在Windows上,扩展动态链接库后缀为.dll,在Unix或Linux上为“.so”2):修改php.ini,扩展名已经在php.ini中。如果有extension=extname.so,则去掉前面的“;”,或者直接加上extension=extname.so,根据扩展文档启用扩展ComposerComposer。需要PHP(>5.3.2)才能将composer.phar下载到当前目录$curl-sShttps://getcomposer.org/installer|php运行Composer$phpcomposer.phar查看版本$phpcomposer.phar-V下载安装包package$phpcomposer.pharinstallpackage使用安装包(1)使用autoloader自动加载,因为Composer生成了一个vendor/autoload.php文件,您可以直接要求/包含此文件。4、扩展和包的比较这里的PHP扩展(extension)应该叫做“模块(module)”,是用C和C++写的函数的集合,而包(package)是用PHP写的函数的集合。PHP的包(package)使用动态链接以.dll和.so的形式加载,而包则通过require/include直接导入。因此,Pecl和Pear是互补的,它们管理扩展和包。尽管Pear安装程序和ComposerComposer比Pear晚了10多年才出现,但它们就像“如果你阅读推文和论坛,你会得到这样的印象,即没有人再使用PEAR,而现在每个人都在使用Composer”。每个人都在使用Composer。因为Composer可以做到Pearinstaller可以做到的,而且它可以做得更好,但是Composer可以做到的,Pearinstaller不一定能做到。举两个例子:Pearinstaller作为一个系统级的包,通常需要root或管理员权限。并且一台机器上的多个项目很难使用不同版本的库,但是Composer只需要你修改项目根目录下的composer.json文件,然后update即可修改项目依赖库的版本。Pearinstaller有不明确的依赖关系,但是Composer有一个文件composer.json(位于项目的根目录)声明依赖关系,还有一个composer.lock文件(位于项目的根目录)。与锁定文件类似,任何构建项目的人都会下载与指定版本完全相同的依赖项,从而减轻潜在错误对部署的影响。5、使用Composer安装Pear包既然Pearinstaller已经完全被Composer取代了,我们是不是也可以使用Composer包管理器在Pear库中安装一些Pear包呢?毕竟,Pear存储库具有Packagist(Composer的包信息存储库)所没有的扩展。所以下面介绍如何使用Composer安装Pear包。修改Composer获取包的通道为“pear”,要求在该通道下下载扩展包,包前缀使用pear-pear2避免冲突{"repositories":[{"type":"pear","url":"https://pear2.php.net"}],"require":{"pear-pear2.php.net/PEAR2_Text_Markdown":"*","pear-pear2/PEAR2_HTTP_Request":"*"}}完成后,代码位于项目目录vendor文件夹中。应用时直接使用autoloader自动加载。6.总结如果是Composer安装使用的包,如果涉及到低级扩展,使用Pecl(也可以使用其他编译安装方式)安装。7.参考资料PEAR简介:用PEAR编写你的下一个php程序PECL扩展基于PHP5面向对象特性Perl和PDO编程PECL扩展库安装PEAR和PEAR2有什么区别?PHP7学习笔记
