/** * 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); }
/** * Injects the Cache Manager because we cannot inject an automatically factored cache during compile time. * * @param \TYPO3\FLOW3\Cache\CacheManager $cacheManager * @return void */ public function injectCacheManager(\TYPO3\FLOW3\Cache\CacheManager $cacheManager) { $this->cache = $cacheManager->getCache('FLOW3_Security_Policy'); }