多くの小規模なライブラリのパッケージでは、カスタマイズが必要になることはほとんどありません。 単にインストールすればそれで終わりです。package.xml 1.0 は、このような処理には適しています。 パッケージの規模が大きくなり複雑になってくると、ファイルの内容に少々手をいれたり データベースなどの外部のコンポーネントを変更したりする必要が出てきます。
package.xml 1.0 では、隠し機能として <replace> タグでファイルの内容を変更することができました。 たとえばこのようになります。
<file name="blah.php" role="php"> <replace from="@token@" to="version" type="package-info"/> <replace from="@anothertoken@" to="php_dir" type="pear-config"/> </file> |
上の例は、インストール時に blah.php ファイルを探し、 str_replace() を使用してそのファイル内の文字列 @token@ をパッケージのバージョン番号に置き換えます。そして、文字列 @anothertoken@ を、 php_dir の設定値に置き換えます。
これは強力な機能ではありますが、package.xml バージョン 1.0 で使用可能なカスタマイズ用タグは、この replace タグだけです。 package.xml バージョン 2.0 を開発するにあたって、 "task" という拡張機能を追加することにしました。これは Phing のような独創的な作品に影響を受けたものです。
タスクの定義は、xml の <file> タグの子要素で行います。 タスクの実装は、PEAR_Task_Common タスクを継承して行います。
タスクの定義は、package.xml の tasks 名前空間で行います。現在は、この名前空間は http://pear.php.net/dtd/tasks-1.0 です。 現在の tasks 名前空間は http://pear.php.net/dtd/tasks-1.0.xsd で定義されています。PEAR にバンドルされている独自タスクには、次のようなものがあります。
これらのタスクの xml については、 ここ に説明があります。