FAQ

FAQ -- よくある質問とその答え

PHP_CompatInfo の FAQ

1. 全般的な質問
1.1. 使用料は?
1.2. サポートはありますか?
1.3. バグを見つけました。どうしたらいいですか?
1.4. PEAR って何ですか?
2. ○○するには
2.1. PHP4/5 の両方に対応したアプリケーションで、オプションで PHP5 のコードを使用しています。 PHP 5 のコードを無視させるにはどうしたらいいですか?
3. 新しい API 1.8.0 について
3.1. 結果 (PHP の配列のダンプ) を標準出力に表示したくありません
3.2. データソースのパース状況を知りたいのです

1. 全般的な質問

1.1. 使用料は?

自由にダウンロードして使用することができます。 しかし、著作権に関する注意書きは削除しないでください。詳細は PHP ライセンス を確認ください。

1.2. サポートはありますか?

はい。ただし、このドキュメントを読んでも答えが見つからない場合に限ります。 また、サポートをするためにはある程度の情報 (使用しているプラットフォームが Window か *nix か Mac か、 PHP のバージョン、インストールしている PEAR パッケージなど) が必要です。場合によってはあなたの書いたスクリプトそのものも必要かもしれません。

1.3. バグを見つけました。どうしたらいいですか?

PEAR のバグトラッカーで報告してください。

1.4. PEAR って何ですか?

PEAR ( PHP Extension and Application Repository の短縮形) は、再利用可能な PHP コンポーネントのフレームワーク、 そしてその配布システムのことです。

PEAR マニュアルPEAR FAQ も忘れずに読んでください。

2. ○○するには

2.1. PHP4/5 の両方に対応したアプリケーションで、オプションで PHP5 のコードを使用しています。 PHP 5 のコードを無視させるにはどうしたらいいですか?

PHP5 用のコード (関数、定数、拡張モジュール) を無視させたい場合は、 (ファイル、ディレクトリ、文字列などの) パース時のオプション "ignore_versions" を指定します。この例では、 カレントディレクトリをパースする際に PHP 5.0.0 から PHP 5.2.0 までのコードを無視します。
<?php
require_once 'PHP/CompatInfo.php';

$dir = dirname(__FILE__);
$options = array('ignore_versions' => array('5.0.0', '5.2.0'));

$pci = new PHP_CompatInfo();
$res = $pci->parseDir($dir, $options);
var_dump($res);
?>

3. 新しい API 1.8.0 について

3.1. 結果 (PHP の配列のダンプ) を標準出力に表示したくありません

API 1.8.0 ではこのような挙動になりましたが、すべての出力イベントを Null レンダラに処理させることもできます。その場合は、 null 値 (大文字小文字は区別しません) をクラスコンストラクタの最初のパラメータとして指定します。
<?php
require_once 'PHP/CompatInfo.php';

$pci = new PHP_CompatInfo('null');

$res = $pci->parseData($datasource);

// 出力される結果は、次の行が生成するもののみです
var_dump($res);
?>

3.2. データソースのパース状況を知りたいのです

単一のファイルを処理する場合なら、 プログレスバーや処理中メッセージを表示する必要は特にありません。 しかし、多くのサブディレクトリやファイルが存在するディレクトリを処理する場合は、 それなりの時間がかかります。

実行中のインターフェイス (CLI あるいはウェブ) によって、 プログレスバーや処理中メッセージを表示する方法は 2 通りあります。

警告

プログレスバーを表示するように指定したときに PEAR::Console_ProgressBar パッケージがインストールされていなければ、デフォルトのテキストメッセージを使用します (エラーにはなりません)。
Wait while parsing data source ...
Wait while parsing file "C:\wamp\tmp\Services_W3C_CSSValidator-0.1.0\CSSValidator.php"

CLI で pci コマンドを使う場合 -p|--progress スイッチで bar (プログレスバー) あるいは text (シンプルなテキストメッセージ) のいずれかを指定します。
pci --summarize --progress bar --dir C:\Temp\beehiveforum082\forum

CLI で pci コマンドを使わない場合 クラスのコンストラクタの 2 番目のパラメータ (ドライバ固有のオプション) を使用します。 キー progressbar (プログレスバー) あるいは text (シンプルなテキストメッセージ) を指定します。 また、サイレントモードを無効にすることも忘れないようにしましょう (以前のバージョンとの互換性を保つため、デフォルトでは有効になっています)。
<?php
require_once 'PHP/CompatInfo.php';

$driverType    = 'csv';
$driverOptions = array('silent' => false, 'progress' => 'bar');

$pci = new PHP_CompatInfo($driverType, $driverOptions);
?>
この出力は次のようになります。
-  79/419 files [====>-----------------]  18.85% Elapsed Time: 00:28.93

Web SAPI の場合 配布物の中の examples ディレクトリに、 pci180_parsefolder_tohtml.php という名前のサンプルがあります。このサンプルでは PEAR::HTML_Progress2 パッケージを用いて COMET (AJAX ではありません) によるプログレスバーを作成しています。