PECL和PEAR有什么区别?

150

我可以看到GD库用于处理图像。但我无法看出PECL和PEAR之间的差异。 两者都有身份验证功能。 它们之间的主要区别是什么? 为什么它们不合并呢?

6个回答

286

PECLPHP扩展社区库的缩写,它包含用C语言编写的扩展,可以加载到PHP中以提供额外的功能。您需要具备管理员权限、C编译器和相关工具链才能安装这些扩展。

PEARPHP扩展和应用程序仓库,其中包含使用php编写的库和代码。您只需下载、安装并在您的代码中引用即可。

所以,虽然它们很相似,但又有所不同 :)


26
非常清楚的回答。我想补充一下,PEAR其实是两个东西:它是一个库存储库,但也是一个发布渠道/打包系统。最初,打包系统只发布单一的PEAR存储库,但现在,任何第三方库都可以使用这个发布渠道。 - troelskn
@troelskn,你把那称作“分销渠道”?它跟普通的tomdickharry PHP库有什么区别吗?你是不是也要把jQuery称作“分销渠道”? - Pacerier
@troelskn,实际上,jQuery、Tom和Harry也有明确定义的协议。那么,PEAR与它们有何不同之处呢? - Pacerier
7
@Pacerier 最后一次我查看时,jQuery 没有包管理器。在 js 社区中,现在 npm 似乎填补了这个空缺(虽然多年来已经出现了其他竞争者)。 - troelskn
@Pacerier PEAR 绝对是一个分发渠道的管理器。它不像 jQuery 一样是一个库。例如 https://pear.php.net/manual/en/guide.users.commandline.channels.php - That Realty Programmer Guy

14

PECL 是 PHP 的 C 扩展仓库。这些扩展通常通过 pecl 命令安装,该命令是 pear 的别名,其默认的频道/仓库设置为 pecl.php.net

PEAR 有多重含义:

  1. 安装程序 (pear 命令),它能够从不同的频道(仓库),包括 pecl.php.net 安装包。许多人认为 composer 是 pear 安装程序的后继者。
  2. 仓库 http://pear.php.net/packages.php ,里面有大约 600 个库。其中很多可用于 composer 安装。
  3. PHP 编码标准 ,可使用 PHP_CodeSniffer。

感觉更准确/清晰的说法是PEAR生态系统包括编码标准? - Zv_oDD

7

Pear是用PHP编写的PHP类,而PECL是不用PHP编写并需要编译的扩展。


2
< p > PEAR本身并不是一种编码规范。相反,PEAR“遵循”PHP社区中鼓励的一种编码规范。然而,这并不是PHP用户唯一可以遵循的编码规范,例如ZF建议采用略有不同的标准。 < /p >

1

PEAR也是一种编码标准 ;-) php_codesniffer(通过$pear install php_codesniffer安装)是一种工具,它将扫描您的代码并突出显示其偏离该标准或任何其他支持的编码标准的地方。


1
据我所知,PHP拥有模块和框架,两者都是其库。外部模块称为扩展,存储在PECL仓库中,而称为包的框架存储在PEAR仓库中。
可以通过简单地获取源代码文件来在PHP代码中使用PEAR包,但是应该在系统上安装PECL扩展并在配置文件中启用以链接到解释器。
此外,PEAR包是用PHP编写的纯文本脚本,而PECL扩展是用C/C++编写的编译二进制文件。
正如其名称所示,扩展可以扩展PHP自身尚未提供的功能,而包只是PHP代码的集合,即您可以使用PHP本身实现的所有功能。
这类似于Perl的PM模块和XS扩展。
总之,我的观点可能不完全准确,但这就是我能够在脑海中理清的内容 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接