PHP扩展和包的管理PEAR-PECL-Composer

其实要说梦想的话, 我的梦想就是多赚点儿钱...
扩展(Extension)一般偏底层,包(Application,Package)一般偏应用。不建议做过分的区分,在使用中能够理解和区分即可。 对于他们的管理目前有PEAR、PECL、Composer。

PEAR

PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。http://pear.php.net/
Bakken在1999年创立了PEAR项目,目标是试图定义一种标准,帮助开发者编写可移植、可重用的代码,避免重复发明“车轮”。代码均是PHP编写的。
涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService 等许多方面,用户可以通过下载这些类库,并适当的作一些定制以实现自己需要的功能。
但是随着Git、github等发展,其逐渐被Composer包管理替代。

PECL

“PHP Extension Community Library”的缩写,即PHP 扩展库。https://pecl.php.net/
PECL是使用C语言开发的,通常用于补充一些用PHP难以完成的底层功能,往往需要重新编译或者在配置文件中设置后才能在用户自己的代码中使用。
2种使用方式:
命令模式,和pear的命令一致,通过man pecl显示此命令的用法
编译模式,即phpize

Composer

PHP包管理工具,在“帮助开发者编写可移植、可重用的代码,避免重复发明“车轮””上和PEAR有相同的目标和思想,但是composer的包一般放在github、bitbucket等上,通过packagist 可以浏览上传等

以Yaml安装使用为例

pecl安装

http://php.net/manual/zh/install.pecl.pear.php

pecl install yaml
这将下载 yaml 的源代码,编译之,并将 yaml.so 安装到扩展库目录 extension_dir 中。然后 yaml.so就可以通过 php.ini 加载了。

编译安装

http://php.net/manual/zh/install.pecl.phpize.php
有时候不能用 pecl 安装命令。这可能是因为在防火墙后面,或者是因为想要安装的扩展库还没有 PECL 兼容的包,例如 SVN 中尚未发布的扩展库。
如果要编译这种扩展库,可以用更底层的编译工具来手工进行编译。phpize 命令是用来准备 PHP 扩展库的编译环境的。

1
2
3
4
5
6
7
$ wget https://pecl.php.net/get/yaml-1.3.0.tgz
$ tar -xzvf yaml-1.3.0.tgz
$ cd yaml-1.3.0
$ phpize
$ ./configure
$ make
$ make install

成功的安装将创建 yaml.so 并放置于 PHP 的扩展库目录 extension_dir 中。需要调整 php.ini 加入 extension=yaml.so 这一行之后才能使用此扩展库。
使用 phpize –help 命令可以显示此命令用法。

composer

可以参看文档 http://www.jianshu.com/p/f0b9a319711f

composer require mustangostang/spyc
目前主流的方式,对于偏底层的扩展通过编译方式安装,对于偏应用的通过composer方式。

http://www.jianshu.com/p/d8b75dbc852a