zipContainer->hasEntry('mimetype')) { $zipEntry = new ZipEntry('mimetype'); $zipEntry->setCreatedOS(ZipPlatform::OS_DOS); $zipEntry->setExtractedOS(ZipPlatform::OS_DOS); $zipEntry->setCompressionMethod(ZipCompressionMethod::STORED); $zipEntry->setData(new ZipNewData($zipEntry, 'application/epub+zip')); $this->zipContainer->addEntry($zipEntry); } $this->sortEntries(); } private function sortEntries() { $this->zipContainer->sortByEntry( static function (ZipEntry $a, ZipEntry $b) { if (strcasecmp($a->getName(), 'mimetype') === 0) { return -1; } if (strcasecmp($b->getName(), 'mimetype') === 0) { return 1; } if ($a->isDirectory() && $b->isDirectory()) { return strcmp($a->getName(), $b->getName()); } if ($a->isDirectory()) { return -1; } if ($b->isDirectory()) { return 1; } return strcmp($a->getName(), $b->getName()); } ); } }