/** * Explicitly compile proxy classes * * The compile command triggers the proxy class compilation. * Although a compilation run is triggered automatically by FLOW3, there might * be cases in a production context where a manual compile run is needed. * * @FLOW3\Internal * @param boolean $force If set, classes will be compiled even though the cache says that everything is up to date. * @return void */ public function compileCommand($force = FALSE) { $objectConfigurationCache = $this->cacheManager->getCache('FLOW3_Object_Configuration'); if ($force === FALSE) { if ($objectConfigurationCache->has('allCompiledCodeUpToDate')) { return; } } $classesCache = $this->cacheManager->getCache('FLOW3_Object_Classes'); $this->proxyClassCompiler->injectClassesCache($classesCache); $this->aopProxyClassBuilder->injectObjectConfigurationCache($objectConfigurationCache); $this->aopProxyClassBuilder->build(); $this->dependencyInjectionProxyClassBuilder->build(); $classCount = $this->proxyClassCompiler->compile(); $objectConfigurationCache->set('allCompiledCodeUpToDate', TRUE); $classesCacheBackend = $classesCache->getBackend(); if ($this->bootstrap->getContext()->isProduction() && $classesCacheBackend instanceof FreezableBackendInterface) { $classesCache->getBackend()->freeze(); } $this->emitFinishedCompilationRun($classCount); }