PHP 包與擴展的管理工具 Pear、Composer 與 Pecl

PHP社區提供了幾個管理擴展和包的工具包括 PeclPearPear2Composer。在不瞭解的狀況下去使用這些工具必然會出現困惑,因此下面就簡單介紹下這幾個管理工具。

1、簡介

下面簡要介紹 Pear、Pear package、Pear installer、Pear二、Pyrus、Composer、Pecl。php

Pear

Pear 是 PHP 擴展與應用庫(the PHP Extension and Application Repository)的縮寫,是一個 PHP 擴展及應用的一個代碼倉庫。Pear 倉庫代碼是以包(package)分區,每個 Pear package 都是一個獨立的項目有着本身獨立的開發團隊、版本控制、文檔和其餘包的依賴關係信息。Pear package 以 phar、tar 或 zip 發佈。html

Pear 的包管理器是Pear installer,用來瀏覽並搜索 Pear package、查看最新發行版、下載 Pear package。linux

Pear2

Pear2 是下一代的 Pear 代碼倉庫,在使用性、速度、安全上都有改進。Pear2 的包管理器 Pyrus 是下一代的 Pear installer,使用 PHP 編寫,以 phar 格式發佈。編程

Composer

Composer 是 PHP 中的應用程序級的包依賴管理器。用來管理(安裝/更新)你項目中申明的依賴庫。Composer 的包信息存儲庫是 Packagist。json

Pecl

Pecl 是 PHP 擴展社區倉庫(The PHP Extension Community Library)的縮寫,Pecl 擴展庫的包(package)是使用 C、C++ 編寫的動態連接庫擴展,在編譯安裝後經過 php.ini 加載,隨 PHP 進程被裝入內存。安全

2、發佈時間軸

圖片描述

3、Mac 安裝與使用

Pear

Pear 安裝主要是安裝 Pear installer 和 Pyrus 這兩個包管理器,而後經過包管理器安裝其餘 Pear package。composer

(1)Pear installer

若是你安裝的是PHP (> 4.3.0),而且編譯時並未使用「./configure flag --without-pear」選項,那麼 Pear installer 的安裝已集成在系統裏。但若是你安裝的 PHP(< 4.3.0),那麼你就須要手動安裝 Pear installer。curl

  1. 下載 go-pear.phar 文件

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

  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、libxml二、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 引入這個文件。

4、比較

擴展與包

  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(位於項目根目錄下)文件相似鎖文件會使任何人創建項目都將下載與指定版本徹底相同的依賴,從而減輕潛在的錯誤對部署的影響。

5、使用 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 自動加載

6、總結

若是是包使用 Composer 安裝使用,若是是涉及底層擴展則使用 Pecl(也可使用其餘編譯安裝方式) 安裝。

7、參考資料

  1. PEAR簡介:用PEAR來寫你的下一個php程序
  2. 基於 PHP5 面向對象特性的 PECL 擴展 Perl 與 PDO 編程
  3. PECL 擴展庫安裝
  4. What is the difference between PEAR and PEAR2?
  5. PHP7 學習筆記
相關文章
相關標籤/搜索