/** * @param string $template * @return string */ public function parse($template) { $view_file = $this->_view->getViewPath() . '/' . ltrim($template, '/'); if (!is_file($view_file)) { throw new CompileException('view file is not exists:' . $template); } $content = file_get_contents($view_file); foreach (self::$_rules as $pattern => $handler) { $content = preg_replace_callback($pattern, function ($matches) use($handler) { return $this->_handle($handler, $matches); }, $content); } return $content; }