public function loadFile($source, $parameters = array()) { if (!is_readable($source)) { throw new \Exception('Configuration source "' . $source . '" is not readable!'); } $cacheDest = 'config/' . md5($source) . '/' . md5(json_encode($parameters)); if (Cache::needFresh($source, $cacheDest) || DEBUG) { $content = file_get_contents($source); foreach ($parameters as $k => $v) { $parameters['&' . $k] = $v; $content = str_replace('%' . $k . '%', '*' . $k, $content); unset($parameters[$k]); } $aliasYaml = Yaml::dump(array('__aliases' => $parameters), 3); foreach ($parameters as $k => $v) { $aliasYaml = str_replace('\'' . $k . '\':', '- ' . $k, $aliasYaml); } //die($aliasYaml.PHP_EOL.$content); $result = Yaml::parse($aliasYaml . PHP_EOL . $content); unset($result['__aliases']); Cache::set($cacheDest, $result); } else { $result = Cache::get($cacheDest); } foreach ($result as $k => $v) { $this->addNode($k, $v); } return $this; }
protected function compileFile($source) { $this->currentSource = $this->resolveFilePath($source); $sourceContent = file_get_contents($this->currentSource); $bufferExtension = explode('.', $source); $extension = $bufferExtension[count($bufferExtension) - 1]; $sourceContentPreCompiled = $this->preCompile($sourceContent); $tmpFileKey = str_replace(array(ROOT, '.' . $extension, '/'), array('', '.php', '_'), $source); $sourceContentPostCompiled = $this->postCompile($sourceContentPreCompiled); Cache::writeTempFile($extension . '/' . $tmpFileKey, $sourceContentPostCompiled); $tmpFilePath = TMP_PATH . $extension . '/' . $tmpFileKey; ob_start(); include $tmpFilePath; return ob_get_clean(); }