The phar file format is literally laid out as stub/manifest/contents/signature, and
stores the crucial information of what is included in the phar archive in its
manifest.
The Phar manifest is a highly optimized format that allows per-file
specification of file compression, file permissions, and even user-defined
meta-data such as file user or group. All values greater than 1 byte are stored
in little-endian byte order, with the exception of the API version, which
for historical reasons is stored as 3 nibbles in big-endian order.
All unused flags are reserved for future use, and must not be used
to store custom information. Use the per-file meta-data facility
to store customized information about particular files.
The basic file format of a Phar archive manifest is as follows:
Global Phar manifest format
Size in bytes
Description
4 bytes
Length of manifest in bytes (1 MB limit)
4 bytes
Number of files in the Phar
2 bytes
API version of the Phar manifest (currently 1.0.0)
4 bytes
Global Phar bitmapped flags
4 bytes
Length of Phar alias
??
Phar alias (length based on previous)
4 bytes
Length of Phar metadata (0 for none)
??
Serialized Phar Meta-data, stored in serialize() format