/** * Build the manifest and return it. * * @return void */ private function buildManifest() { $files = $this->phar->getFiles(); $alias = $this->phar->getAlias(); $metaData = $this->phar->getMetadata(); if (!empty($metaData)) { $metaData = serialize($metaData); } $manifest = new StreamWriter('php://temp'); $manifest->writeUint32le(count($files))->writeUint16be($this->phar->getApiVersion())->writeUint32le($this->phar->getFlags())->writeUint32le(strlen($alias))->write($alias)->writeUint32le(strlen($metaData))->write($metaData); // Add files now. foreach ($files as $file) { $manifest->writeStream($this->serializeFile($file)); } $this->file->writeUint32le($manifest->getLength()); $this->file->writeStream($manifest->seek(0)); }