/** * Saves multiple binaries in a single file * @param \recompilr\Compiler\AggregateCompiler $compiler */ public function save(\recompilr\Compiler\CompilerInterface $compiler) { $contents = ''; if ($compiler instanceof AggregateCompiler) { $compilers = $compiler->getCompilers(); foreach ($compilers as $compiler) { $contents .= parent::recompile($compiler); } $contents = '<?php ' . $contents; $bin = base64_encode($contents); file_put_contents($this->fileName, $bin); } else { parent::save($compiler); } }
/** * Helper function to recompile class * @param \recompilr\Compiler\CompilerInterface $compiler * @return string */ protected function recompile(CompilerInterface $compiler) { $classRegistry = $compiler->getClassRegistry(); $maps = $classRegistry->getClassMapping(); $contents = ''; if (!empty($maps)) { foreach ($maps as $map) { if ($map->isMapped()) { $compiled = $map->recompile(); if (!empty($compiled)) { $contents .= $compiled; $contents .= "\r\n"; $contents .= "\r\n"; $contents .= "\\recompilr\\map('" . $map->getClassName() . "','" . $map->getCurrentName() . "');"; $contents .= "\r\n"; $contents .= "\r\n"; } } } } $contents = str_replace('<?php', '', $contents); return $contents; }