public static function generateNew(Kernel $kernel, array &$options = array()) { $builder = new UserClosure([], ['$kernel']); $builder[] = '$cache = new UniversalCache(array());'; if (extension_loaded('apcu') && isset($options['APC'])) { $builder[] = new Statement(new MethodCall('$cache', 'addBackend', [new NewObject('UniversalCache\\ApcuCache', [$kernel->getApplicationID()])])); } if (extension_loaded('memcached') && isset($options['Memcached'])) { if (isset($options['Memcached']['PersistentId'])) { $builder[] = '$memcached = ' . new NewObject('Memcached', [$options['Memcached']['PersistentId']]) . ';'; } else { $builder[] = '$memcached = new Memcached;'; } if (isset($options['Memcached']['Servers'])) { foreach ($options['Memcached']['Servers'] as $server) { $builder[] = new Statement(new MethodCall('$memcached', 'addServer', $server)); } } $builder[] = new Statement(new MethodCall('$cache', 'addBackend', ['$memcached'])); } if (isset($options['FileSystem'])) { $builder[] = new Statement(new MethodCall('$cache', 'addBackend', [new NewObject('UniversalCache\\FileSystemCache', [$kernel->getCacheDir()])])); } $builder[] = 'return $cache;'; $className = get_called_class(); return new NewObject($className, [$options, $builder]); }
/** * $kernel->asset->loader * $kernel->asset->writer. */ public function register(Kernel $kernel, $options = array()) { $kernel->asset = function () use($kernel, $options) { $config = new AssetConfig($options); $config->setEnvironment($kernel->environment); $config->setNamespace($kernel->getApplicationUUID()); $cache = new UniversalCache(array(new ApcuCache($kernel->getApplicationUUID()), new FileSystemCache($kernel->getCacheDir()))); $config->setCache($cache); $config->setRoot(PH_APP_ROOT); $loader = new AssetLoader($config); $render = new AssetRender($config, $loader); $compiler = $render->getCompiler(); $compiler->defaultJsCompressor = 'uglifyjs'; $compiler->defaultCssCompressor = null; return (object) array('loader' => $loader, 'config' => $config, 'render' => $render, 'compiler' => $compiler, 'cache' => $cache); }; }