<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/phar.fileformat.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'phar.fileformat.phar.php',
    1 => 'Phar ファイルフォーマット',
    2 => 'Phar ファイルフォーマット',
  ),
  'up' => 
  array (
    0 => 'phar.fileformat.php',
    1 => 'phar って、tar や zip とは何が違うの?',
  ),
  'prev' => 
  array (
    0 => 'phar.fileformat.zip.php',
    1 => 'Zip 形式の phar アーカイブ',
  ),
  'next' => 
  array (
    0 => 'phar.fileformat.flags.php',
    1 => 'グローバルな Phar ビットマップフラグ',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/phar/fileformat.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="phar.fileformat.phar" class="section">
 <h2 class="title">Phar ファイルフォーマット</h2>
 <p class="para">
  phar ファイル形式は スタブ/マニフェスト/コンテンツ/シグネチャ
  で構成されており、phar アーカイブ内に何が含まれているのかについての重要な情報は
  <code class="literal">マニフェスト</code> に格納されます。
 </p>
 <p class="para">
  Phar マニフェストは高度に最適化された書式で、
  ファイル単位で圧縮やパーミッションの情報を指定することができ、
  さらにファイルのユーザーやグループなど、独自に定義したメタデータも含めることができます。
  1 バイトをこえる大きさの値はリトルエンディアン形式のバイト順で保存されます。
  ただし API バージョンだけは例外です。これは 3 ニブルのデータですが、
  歴史的な理由によりビッグエンディアン形式のバイト順で保存されます。
 </p>
 <p class="para">
  未使用のフラグはすべて将来の使用に備えて予約されています。
  したがって、独自の情報を保存するためにそれを使用してはいけません。
  特定のファイルについて独自の情報を保存するには、
  ファイル単位のメタデータ機能を使用します。
 </p>
 <p class="para">
  Phar アーカイブマニフェストの基本的なファイルフォーマットは、次のようになります。
 </p>
 <p class="para">
 <table class="doctable table">
  <caption><strong>グローバル Phar マニフェスト書式</strong></caption>
  
   <thead>
    <tr>
     <th>バイト数</th>
     <th>説明</th>
    </tr>

   </thead>

   <tbody class="tbody">
    <tr>
     <td>4 バイト</td>
     <td>マニフェスト全体のバイト長 (最大 1 MB)。</td>
    </tr>

    <tr>
     <td>4 バイト</td>
     <td>Phar 内のファイル数。</td>
    </tr>

    <tr>
     <td>2 バイト</td>
     <td>Phar マニフェストの API バージョン (現在は 1.0.0)。</td>
    </tr>

    <tr>
     <td>4 バイト</td>
     <td>グローバルな Phar ビットマップフラグ。</td>
    </tr>

    <tr>
     <td>4 バイト</td>
     <td>Phar のエイリアスの長さ。</td>
    </tr>

    <tr>
     <td>??</td>
     <td>Phar のエイリアス (先ほどの長さに基づきます)。</td>
    </tr>

    <tr>
     <td>4 バイト</td>
     <td>Phar のメタデータの長さ (存在しない場合は <code class="literal">0</code>)。</td>
    </tr>

    <tr>
     <td>??</td>
     <td>シリアライズされた Phar メタデータ。<span class="function"><a href="function.serialize.php" class="function">serialize()</a></span> 形式で格納される。</td>
    </tr>

    <tr>
     <td>最低でも 24 * エントリ数ぶんのバイト</td>
     <td>各ファイルのエントリ</td>
    </tr>

   </tbody>
  
 </table>

 </p>
</div><?php manual_footer($setup); ?>