PEAR での最初の一般向けリリース を 2003 年 3 月に行いました。これは、 PHP_Compatibility という名前での提案が承認されてから 1 か月後のことでした。
特定のファイルを無視する機能 が PHP_CompatInfo::parseFolder() と PHP_CompatInfo::parseArray() に追加されました。
特定のフォルダを無視する機能 が PHP_CompatInfo::parseFolder() に追加されました。
特定の関数を無視する機能 がすべてのパブリックメソッドに追加されました。
コマンドラインインターフェイスが追加 されました。新しいクラス PHP_CompatInfo_Cli が用意されています。
PHP_CompatInfo::parseFolder() の クローン関数が追加 されました。名前は PHP_CompatInfo::parseDir() です。 parseFolder() は parseDir() のエイリアスとなりました。
parseArray に新しいオプション file_ext が追加 されました。このオプションには、PHP コードとみますファイル拡張子の配列を指定します。 デフォルトは php, php4, inc, phtml です。
PEAR_PackageFileManager との統合が完了 しました。 PackageFileManager::detectDependencies() が PHP_CompatInfo のコールを実装し、 必要となる PHP の最小バージョンを簡単に検出できるようになりました。
PHP5 の検出を改善 しました。PEAR での最初の公開リリースから 1 年を経て公開された安定版の 1.0.0 では、バグ修正のほかに PHP3 のスクリプトや関数の検出機能も追加しました。
PHP の最大バージョンの報告機能を追加 しました。ユーザからの要望 6056 を実装したものです。
PECL の検出を改善 しました。特に SAPI 拡張モジュール周りを改善しています。
新しいオプション ignore_constants を追加 しました。 PHP_CompatInfo::parseArray(), PHP_CompatInfo::parseDir(), PHP_CompatInfo::parseFolder(), PHP_CompatInfo::parseFile() そして PHP_CompatInfo::parseString() で使用できます。
指定したバージョンの PHP のコンポーネントの一覧機能を追加 しました。新しい関数 PHP_CompatInfo::loadVersion() が API に追加されています。
コマンドラインインターフェイスを改善 しました。出力を最大 80 カラムまでにおさめるようにして見栄えをよくしました。 また、Windows 用の起動ファイル (compatinfo.bat という名前です) も追加しました。
package xml 1.0 の生成は、バージョン 1.3.2 (2006 年 9 月) 以降では行わないようになりました。
リーダーが交代 しました。このパッケージを最初に開発した Davey Shafik が開発を退き、代わりに私 (Laurent Laville) がこのパッケージのリーダーとなりました。
PHP 4.3.0 以降を必須とするようにしました。これはウェブ版と cli 版のどちらについても同じです。
ライセンスを更新 し、PHP 3.0 から PHP 3.01 としました。
PHP5 の検出を改善 しました。いくつかのバグを修正しました。
PHP5 の検出を改善 しました。新しいデータソースとして version.xml (revision 1.8) および funclist.txt (revision 1.39) を使用するようにしました。
PHP3 の検出機能を削除 しました。新しいデータソースである version.xml (1.8) と funclist.txt (1.39) から削除されたためです。
コマンドラインインターフェイス Windows (pci.bat) と unix (pci.php) で名前を統一しました。 PHP_CodeSniffer パッケージを使用して、コーディング規約のエラー/警告を多数修正しました。
CLI のデバッグ出力で、拡張モジュールがどこのものなのか (PECL かどうか) と拡張モジュールの最小バージョン (PHP ではなく) を表示するようになりました。 サンプルは docs/examples/checkExtensions.php にあります。
PHP5 の検出を改善 しました。新しいデータソースとして version.xml (revision 1.9) および funclist.txt (revision 1.39) を使用するようにしました。
PHP の定数のうち、ネイティブに検出できるものが増えました。
コアの定義済み定数 ( PHP_EOL, DIRECTORY_SEPARATOR, PATH_SEPARATOR, E_STRICT )
日付に関する定義済み定数 ( DATE_* )
CLI 固有の定数 ( STD* )
ファイルアップロード時のエラーに関する定数 ( UPLOAD_ERR_* )
コマンドラインインターフェイス で、シンプルな文字列 (スクリプトタグ <?php ... ?> を含まないコード) のバージョンを検出できるようになりました。 新しいパラメータ -s あるいは --string を使用します。
コマンドラインインターフェイス の結果表示を xml あるいはテキスト (デフォルト) で行えるようになりました。 新しいパラメータ -r あるいは --report を使用します。
loadVersion() が、関数あるいは関数+定数の一覧を返せるようになりました。
PHP のメソッドチェイン を "Davey Shafik" が実装しました。リクエスト #13094 を参照ください。
CLI の出力を 80 カラム固定にしました。main テーブルでは、
File/Path カラムは 29 文字
Version カラムは 9 文字
C カラム (条件コードレベル) は 3 文字
Extensions カラムは 12 文字
Constants/Tokens カラムは 20 文字
CLI の出力を 80 カラム固定にしました。additionnal テーブルでは、
Option カラムは 25 文字
Value カラムは 51 文字
条件指定による検出を改善 しました。新しいオプション ignore_functions_match、 ignore_extensions_match、 ignore_constants_match を追加しました。
これはリクエスト 12857 を実装したもので、オプションによってローカルに例外を指定できるようにしました。
リクエスト 13138 を実装し、結果における定数とトークンを分離しました。
リクエスト 13147 を実装し、ディレクトリのパース時に拡張子を指定できるようにしました (CLI)。
CLI で生成される XML レポートが、ルートタグ (pci) を含む正しい形式になりました。
警告 |
XML のフォーマットはバージョン 1.6.x のものとの互換性がありません。 |
条件コード (function_exists など) を PHP スクリプトで使用しているかどうかを知ることができるようになりました。 ソースコードのパース中に見つかった条件コードの警告レベル (および詳細) は、すべてのインターフェイスで確認できます (コマンドラインの場合も、 新しいカラム C で見ることができます)。
CLI で テキスト出力がカスタマイズ可能 になりました。新しいスイッチ --output-level を使用します。 Path/File+Version は、最低限の出力 (0) から完全な詳細表示 (最大値:15 - デフォルト) まで常に表示されます。
CLI で 結果の要約が可能 になりました。新しいスイッチ --summarize switch を使用します。 ディレクトリのパース時に、すべてのファイルから余計な行を削除します。
コア API を、MVC パターンにしたがって書き直しました。 これは、CLI の出力をカスタマイズしたいというユーザからの要望を受けてのものです。 output-level スイッチを用意しているとはいえ、 プロセスとロジックが分離していないとカスタマイズは容易ではありません。
新しいアーキテクチャ: パーサのロジックは PHP_CompatInfo_Parser クラスにあります。メインのコントローラは PHP_CompatInfo のままですが、 これはパーサのメソッドの単なるラッパーとなっています。 個々の出力フォーマット (csv, xml, text, html, array, null) は、それぞれ独立したレンダラ ( PHP_CompatInfo_Renderer_Csv, PHP_CompatInfo_Renderer_Xml, PHP_CompatInfo_Renderer_Text, PHP_CompatInfo_Renderer_Html, PHP_CompatInfo_Renderer_Array, PHP_CompatInfo_Renderer_Null ) によって提供されています。 これらのレンダラは、共通のインターフェイス PHP_CompatInfo_Renderer で使用できます。
レンダラを自作したり既存のレンダラを変更したりしたい場合は、サンプル pci180_parsedir_tohtml.php を参照ください。
新しい API や、以前のバージョンから変更された API は次のとおりです。
常に結果を標準出力に送る ようになりました。この機能を無効にしたい場合は、FAQ のエントリ 新しい API 1.8.0 について を参照ください。
2 つの新しい出力フォーマット が登場しました。新しいレンダラシステムの採用によって、Web SAPI でも xml レンダラが使えるようになりました (以前は CLI でしか使用できませんでした)。また、新しいレンダラ csv および html が追加されました。 デフォルトの出力フォーマット (PHP の配列ダンプ) には array レンダラを使用し、CLI では text を使用します。
すべてのデータソースをパースするための共通メソッドが追加 されました。新しいメソッド PHP_CompatInfo::parseData() を利用すると、すべてのデータソース (array, string, file, directory) を共通インターフェイスでパースすることができます。 その他の PHP_CompatInfo::parse* 関数群は、このメソッドのエイリアスとなりました (過去との互換性を保つための措置です)。
イベント駆動アーキテクチャ により、複数のレンダラを使用したり PHP_CompatInfo のコア API を拡張したりできるようになりました。
時間がかかる処理の際のプログレスバー の処理が追加されました。ディレクトリ (あるいは多数のファイル) のパース時に、 シンプルな「処理中」メッセージをテキストで表示させたり プログレスバーを表示させたりといったことができるようになりました。 コマンドライン上だけでなく、ウェブインターフェイス上でも可能です。
PHP 5.2.0 以降で登場した 定数 E_RECOVERABLE_ERROR を検出できるようになりました。