这是这个系列的第一篇,我们先从所有现代语言都有的包管理器开始。
因为有了包管理器,我们就可以快速开始一个项目/包/库,然后发布或者部署它。
简介
PHP 的包主要分为 “扩展(extensions)” 和 “代码包(packages)”。
所谓扩展,是由 C 语言进行开发,通过下载、编译等步骤集成进环境的一种手段。在 Windows 中,PHP 扩展的后缀是 .dll
;在 OS X 及 Linux 中,则为 .so
。
而“包”的概念,一般是项目级别的使用。
扩展的安装成本较高,包则相对简单。所以两者的应用场景也因此有明显的区别。
举个例子:
一台服务器上运行了三个 PHP 项目,如果这些项目都需要某一种支持(如 Redis 数据库支持),则可以通过下载安装,然后重新编译 Redis 扩展 的方式,重新编译 PHP-fpm(或者php-cli);
但,如果其中的某一个项目需要调用阿里云的短信服务,而其他不需要,那我们则应该考虑 包 的形式,在项目内部安装 sdk。
扩展
Pecl 是 PHP 扩展的包管理器,也是安装 PHP 的扩展的推荐方式。
你可以在 PECL :: Package Browser :: Top Level (php.net) 找到几乎所有的 PHP 扩展,但某些扩展(如 xcache)则只能通过源码编译的方式手动安装。
一些对性能要求比较高的 PHP 项目,都会用 C 开发,这也意味着他们只提供了 扩展 的形式和安装方式。
(如国内代表性的 PHP: Yaf – Manual 和 PHP: Swoole – Manual)
包
PHP 的包主要分为两种:
- PHP 本身提供的打包格式 PHAR
- 基于 Git/SVN 等版本控制的仓库源码
phar 包
PHAR 是一种 PHP 本身提供的打包形式,它允许将整个项目的 PHP 文件/代码都打包为一个文件,然后在可以通过 php xxx.phar
来运行,或者通过 require/include
来引入 PHP 项目中。
很多著名的 PHP 项目,为了用户使用方便,都会将自己打包为 .phar
扩展名的包(如 composer、phpunit 等)。
最早的 phar 包仓库是官方在 99 年提供的 PEAR,然后在 20 年后,官方又推出了 PEAR2, 在使用性、速度、安全上都有改进。
PEAR 和 PEAR2 的包管理器分别是 Pear installer 和 Pyrus。
最新的 Phar 包管理器是 2015 年诞生的 Phive,你甚至可以用它来安装 Composer。
遗憾的是,到目前(2020/1/5)为止,PhiVE 都没有推出 1.0 版本,稳定性仍有待验证。不过用 PhiVE 来安装开发环境中需要的包,配合 composer 管理正式环境需要的包的方式,还是值得期待的。
源码包
- 源站——Packagist
- 包管理器——composer
参考: