4
PHP社区提供了几个管理扩展和包的工具包括PeclPearPear2Composer。在不了解的情况下去使用这些工具必然会出现困惑,所以下面就简单介绍下这几个管理工具。

一、简介

下面简要介绍 Pear、Pear package、Pear installer、Pear2、Pyrus、Composer、Pecl。

Pear

Pear 是 PHP 扩展与应用库(the PHP Extension and Application Repository)的缩写,是一个 PHP 扩展及应用的一个代码仓库。Pear 仓库代码是以包(package)分区,每一个 Pear package 都是一个独立的项目有着自己独立的开发团队、版本控制、文档和其他包的依赖关系信息。Pear package 以 phar、tar 或 zip 发布。

Pear 的包管理器是Pear installer,用来浏览并搜索 Pear package、查看最新发行版、下载 Pear package。

Pear2

Pear2 是下一代的 Pear 代码仓库,在使用性、速度、安全上都有改进。Pear2 的包管理器 Pyrus 是下一代的 Pear installer,使用 PHP 编写,以 phar 格式发布。

Composer

Composer 是 PHP 中的应用程序级的包依赖管理器。用来管理(安装/更新)你项目中申明的依赖库。Composer 的包信息存储库是 Packagist。

Pecl

Pecl 是 PHP 扩展社区仓库(The PHP Extension Community Library)的缩写,Pecl 扩展库的包(package)是使用 C、C++ 编写的动态链接库扩展,在编译安装后通过 php.ini 加载,随 PHP 进程被装入内存。

二、发布时间轴

图片描述

三、Mac 安装与使用

Pear

Pear 安装主要是安装 Pear installer 和 Pyrus 这两个包管理器,然后通过包管理器安装其他 Pear package。

(1)Pear installer

如果你安装的是PHP (> 4.3.0),并且编译时并未使用“./configure flag --without-pear”选项,那么 Pear installer 的安装已集成在系统里。但如果你安装的 PHP(< 4.3.0),那么你就需要手动安装 Pear installer。

  1. 下载 go-pear.phar 文件

    $ curl -O https://pear.php.net/go-pear....

  2. 全局安装 Pear 命令和安装一些 Pear 包

    $ sudo php -d detect_unicode=0 go-pear.phar

  3. 配置 Pear 进行安装

    1) 更改 Installation Base 位置

    输入1,然后按下 Enter
    输入 /usr/local/pear,然后按下 Enter

    2) 更改 Binaries directory 位置

    输入4,然后按下 Enter
    输入 /usr/local/bin,然后按下 Enter

    3)再按下 Enter 一次,让其默认

    4)安装完成

  4. 查看版本

    $ pear -V

  5. 安装 Pear package 名称为 mypear

    $ sudo pear install mypear

  6. 使用安装包 mypear

因为 Pear 库中的包都是由 PHP 编写的的,所以使用只需要在代码层手动 require/include 引入文件

(2)Pyrus
  1. Pyrus 正常工作需要 phar、simplexml、libxml2、spl 和 pcre 扩展,在 PHP (> 5.3.0) 中是默认开启的
  2. 下载文件 pyrus.phar

    $ wget http://pear2.php.net/pyrus.phar

  3. 第一次使用先运行php pyrus.phar

    $ php pyrus.phar
    $ 输入 yes,然后按下Enter
    $ 输入你安装包存放的位置 /Users/my-project,然后按下Enter
    $ 安装完成

  4. 查看版本

    $ php pyrus.phar --version

  5. 安装 Pear package 名称为 mypear

    $ php pyrus.phar install mypear

  6. 使用安装包 mypear

    (1)因为 Pear 库中的包都是由 PHP 编写的,所以使用只需要在代码层手动 require/include 引入文件,但require_once 不被允许

    (2)Pyrus 可以使用自带的 autoloader 自动引入

Pecl

Pecl 可以通过 Pear 的 Package Manager 的安装管理方式,来进行下载和安装。

图片描述

安装成功

而使用 Pecl 扩展库必须要经过下载扩展库、编译、安装、然后加载。而加载

  1. 下载 Pecl 扩展库 extname

    (1)通过 Pear 下载 Pecl 扩展库

       $ pecl install extname
    

    (2)官网下载:http://pecl.php.net/

    (3)SVN 下载,大多数 Pecl 扩展库也在 SVN

       $ svn checkout http://svn.php.net/repository/pecl/extname/trunk extname
    
  2. 编译、安装

    (1)通过 Pear 下载编译共享 Pecl 扩展库 extname

       $ pecl install extname
    
       这个过程下载 extname 的源代码,编译之,并将创建 extname.so 放置于 PHP 的扩展库目录中。
    

    (2)通过 phpize 编译共享 Pecl 扩展库 extname

       1. 下载 extname 源代码
    
       2. 进入 extname 目录
           
           $ cd extname
    
       3. 准备 PHP 扩展库的编译环境
    
           $ phpize
    
       4. 编译
    
           $ ./configure
           $ make
           $ make install
    
        成功的安装并将创建 extname.so 并放置于 PHP 的扩展库目录中。
    
  3. 加载

    (1)通过 php.ini 加载 extname.so

       1):Windows上是加载扩展的动态链接库后缀是“.dll”,在 Unix 或 Linux 上是“.so”
       
       2):修改 php.ini,扩展已经在 php.ini 里。如果有 extension=extname.so 那么去掉前面“;”,或者直接添加 extension=extname.so
    
  4. 按照扩展文档方式启用扩展

Composer

  1. Composer 需要 PHP(> 5.3.2)
  2. 下载 composer.phar 到当前目录

       $ curl -sS https://getcomposer.org/installer | php
    
  3. 运行 Composer

       $ php composer.phar
    
  4. 查看版本

       $ php composer.phar -V
    
  5. 下载安装包 package

       $ php composer.phar install package
    
  6. 使用安装包

    (1)使用 autoloader 自动加载

因为 Composer 生成了一个 vendor/autoload.php 文件,可以直接 require/include 引入这个文件。

四、比较

扩展与包

  1. PHP的扩展(extension)这里应称为“模块(module)”是 C、C++ 编写的功能合集,而包(package)是 PHP 编写的功能合集
  2. PHP的包(package)以动态链接 .dll、.so 形式加载,而包则是直接引入通过 require/include 方式加載

所以,Pecl 和 Pear 是互为补充,管理者扩展与包。

Pear installer 与 Composer

Composer 虽然比 Pear 晚出现10多年,但就像 Pear 官方文档里面 “If you read tweets and forums you’ll get that impression that nobody uses PEAR anymore, and everyone is using composer now.” 说的,现在所有人都是在使用 Composer。因为 Pear installer 能的 Composer 都能做,并且能做的更好,但 Composer 能做的,Pear installer 却不一定能做。举两个例子:

  1. Pear installer 作为系统级软件包,通常需要 root 或管理员权限。并且对于一台机器上多个项目很难使用不同版本库,但 Composer 只需你在项目根目录下修改 composer.json 文件后 update 就可以对该项目的依赖库进行版本的修改。
  2. Pear installer 依赖关系模糊,但 Composer 有申明依赖关系的文件 composer.json(位于项目根目录下),并且还有 composer.lock(位于项目根目录下)文件类似锁文件会使任何人建立项目都将下载与指定版本完全相同的依赖,从而减轻潜在的错误对部署的影响。

五、使用 Composer 安装 Pear package

既然 Pear installer 已经完全被 Composer 取代了,那么 Pear 库里面的一些 Pear package 我们是否也可以使用 Composer 包管理器来安装?毕竟 Pear 库有 Packagist(Composer 的包信息存储库) 没有的扩展包。所以下面介绍如何使用 Composer 来安装 Pear package。

  1. 修改 Composer 获取包的渠道为“pear”,require 下载该渠道下的扩展包,并将 pear-pear2 作为包前缀避免冲突

    {
        "repositories": [
            {
                "type": "pear",
                "url": "https://pear2.php.net"
            }
        ],
        "require": {
            "pear-pear2.php.net/PEAR2_Text_Markdown": "*",
            "pear-pear2/PEAR2_HTTP_Request": "*"
        }
    }
    
  2. 完成后,代码位于项目目录 vendor 文件夹中。应用时直接使用 autoloader 自动加载

六、总结

如果是包使用 Composer 安装使用,如果是涉及底层扩展则使用 Pecl(也可以使用其他编译安装方式) 安装。

七、参考资料

  1. PEAR简介:用PEAR来写你的下一个php程序
  2. 基于 PHP5 面向对象特性的 PECL 扩展 Perl 与 PDO 编程
  3. PECL 扩展库安装
  4. What is the difference between PEAR and PEAR2?
  5. PHP7 學習筆記

Cindy
1.8k 声望390 粉丝