## Phar ファイルフォーマット

phar ファイル形式は スタブ/マニフェスト/コンテンツ/シグネチャ で構成されており、phar アーカイブ内に何が含まれているのかについての重要な情報は マニフェスト に格納されます。

Phar マニフェストは高度に最適化された書式で、 ファイル単位で圧縮やパーミッションの情報を指定することができ、 さらにファイルのユーザーやグループなど、独自に定義したメタデータも含めることができます。 1 バイトをこえる大きさの値はリトルエンディアン形式のバイト順で保存されます。 ただし API バージョンだけは例外です。これは 3 ニブルのデータですが、 歴史的な理由によりビッグエンディアン形式のバイト順で保存されます。

未使用のフラグはすべて将来の使用に備えて予約されています。 したがって、独自の情報を保存するためにそれを使用してはいけません。 特定のファイルについて独自の情報を保存するには、 ファイル単位のメタデータ機能を使用します。

Phar アーカイブマニフェストの基本的なファイルフォーマットは、次のようになります。

グローバル Phar マニフェスト書式
バイト数 | 説明
--- | ---
4 バイト | マニフェスト全体のバイト長 (最大 1 MB)。
4 バイト | Phar 内のファイル数。
2 バイト | Phar マニフェストの API バージョン (現在は 1.0.0)。
4 バイト | グローバルな Phar ビットマップフラグ。
4 バイト | Phar のエイリアスの長さ。
?? | Phar のエイリアス (先ほどの長さに基づきます)。
4 バイト | Phar のメタデータの長さ (存在しない場合は 0)。
?? | シリアライズ化された Phar メタデータ。serialize() 形式で格納される。
最低でも 24 * エントリ数ぶんのバイト | 各ファイルのエントリ