擴(kuò)展(Extension)一般偏底層,包(Application,Package)一般偏應(yīng)用。不建議做過(guò)分的區(qū)分,在使用中能夠理解和區(qū)分即可。
對(duì)于他們的管理目前有PEAR、PECL、Composer。
PEAR
PEAR是PHP擴(kuò)展與應(yīng)用庫(kù)(the PHP Extension and Application Repository)的縮寫(xiě)。http://pear.php.net/
Bakken在1999年創(chuàng)立了PEAR項(xiàng)目,目標(biāo)是試圖定義一種標(biāo)準(zhǔn),幫助開(kāi)發(fā)者編寫(xiě)可移植、可重用的代碼,避免重復(fù)發(fā)明“車輪”。代碼均是PHP編寫(xiě)的。
涵蓋了頁(yè)面呈現(xiàn)、數(shù)據(jù)庫(kù)訪問(wèn)、文件操作、數(shù)據(jù)結(jié)構(gòu)、緩存操作、網(wǎng)絡(luò)協(xié)議、WebService 等許多方面,用戶可以通過(guò)下載這些類庫(kù),并適當(dāng)?shù)淖饕恍┒ㄖ埔詫?shí)現(xiàn)自己需要的功能。
但是隨著Git、github等發(fā)展,其逐漸被Composer包管理替代。
PECL
“PHP Extension Community Library”的縮寫(xiě),即PHP 擴(kuò)展庫(kù)。https://pecl.php.net/
PECL是使用C語(yǔ)言開(kāi)發(fā)的,通常用于補(bǔ)充一些用PHP難以完成的底層功能,往往需要重新編譯或者在配置文件中設(shè)置后才能在用戶自己的代碼中使用。
2種使用方式:
- 命令模式,和pear的命令一致,通過(guò)man pecl顯示此命令的用法
- 編譯模式,即phpize
Composer
PHP包管理工具,在“幫助開(kāi)發(fā)者編寫(xiě)可移植、可重用的代碼,避免重復(fù)發(fā)明“車輪””上和PEAR有相同的目標(biāo)和思想,但是composer的包一般放在github、bitbucket等上,通過(guò)packagist 可以瀏覽上傳等
以Yaml安裝使用為例
參看https://segmentfault.com/a/1190000000409556
pecl安裝
http://php.net/manual/zh/install.pecl.pear.php
pecl install yaml
這將下載 yaml 的源代碼,編譯之,并將 yaml.so 安裝到擴(kuò)展庫(kù)目錄 extension_dir 中。然后 yaml.so就可以通過(guò) php.ini 加載了。
編譯安裝
http://php.net/manual/zh/install.pecl.phpize.php
有時(shí)候不能用 pecl 安裝命令。這可能是因?yàn)樵诜阑饓竺妫蛘呤且驗(yàn)橄胍惭b的擴(kuò)展庫(kù)還沒(méi)有 PECL 兼容的包,例如 SVN 中尚未發(fā)布的擴(kuò)展庫(kù)。
如果要編譯這種擴(kuò)展庫(kù),可以用更底層的編譯工具來(lái)手工進(jìn)行編譯。phpize 命令是用來(lái)準(zhǔn)備 PHP 擴(kuò)展庫(kù)的編譯環(huán)境的。
$ 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
成功的安裝將創(chuàng)建 yaml.so 并放置于 PHP 的擴(kuò)展庫(kù)目錄 extension_dir 中。需要調(diào)整 php.ini 加入 extension=yaml.so 這一行之后才能使用此擴(kuò)展庫(kù)。
使用 phpize --help 命令可以顯示此命令用法。
composer
可以參看文檔 http://m.itdecent.cn/p/f0b9a319711f
composer require mustangostang/spyc