2011年11月20日 星期日

Onion - 快速製作 PEAR 相容套件的途徑 A Fast Approach to make PEAR-compatible package.

為了解決 PEAR 套件包裝的問題,今天花了一點時間實作了 PHP CLIFramework 以及一個 PHP 套件管理程式 - Onion,可透過簡易的 INI 設定檔,快速建置 PEAR2 相容的套件規格檔,讓原本需要手動建置 500 多行 XML 減少到可以 6 行內的設定檔來建置套件,如下:



使用 Onion 可幫助開發者快速打包、散佈 PHP 套件,在系統間快速佈署套件。



設定檔格式

選擇 INI 格式設定檔的主要原因,就是因為易讀、易寫,且 PHP 從較早的版本就支援了 parse_ini_file 函式,所以稍微犧牲了資料結構的表現,選擇了 INI 格式作為套件規格檔的格式。

YAML 雖然提供了很好的多重資料結構表現格式,但是由於使用 YAML 格式將會使得很多使用者受到空白鍵、Tab 鍵的困擾,再者,YAML Parser 並不內建於 PHP ,目前的 Extension 也都不太穩定,若使用純 PHP 的 YAML Parser 則會增加相依性,所以目前不提供 YAML 格式的設定檔支援。

至於 Composer 使用了 JSON 格式,不熟 JavaScript 或者對於修改設定而言,方括號以及大括號都太不方便,所以不考慮 JSON 格式的設定檔,至於要易於資料流通,倒是可以考慮自動產生出 JSON 格式的超規格檔 (Meta File)。


目前功能

- 可透過設定檔產生 PEAR 相容規格的基本作者資訊、套件資訊、PEAR Channel 相關資訊、PHP 版本相依性、Extension 相依性等等資料。


目前狀態


- 1.9.4 版本的 PEAR Installer 於 PHP 5.3.8 版本運作良好。



需求

* PHP 5.3.8
* PEAR 1.9.4
* SimpleXml Extension


初期目標,是建立一個能夠產生 PEAR 相容的套件規格檔,可透過 PEAR 打包成 PEAR 套件,讓既有的套件可以使用目前的 PEAR Ecosystem (我不太確定現在 PEAR 這個狀態是否為 Ecosystem?)

長期目標,是希望能夠建立一個獨立運作的套件安裝、建置程式,可簡易建置套件、安裝套件、處理相依性、Bundles、Phar 包裝支援,整合版本控制資源等功能。