setRendered(true). * In case path is not readable throws Exception. * * @return string * @throws Exception */ public function render() { if ($this->rendered) { // Don't render any template return ''; } if (is_readable($this->path)) { $template = file_get_contents($this->path); // Include template file } else { throw new Exception('"' . $this->path . '" template is not readable or not found'); } $template = str_replace(array_keys($this->params), array_values($this->params), $template); return $template; } /** * Parse URL * * Parse URL string to array * * @param $url * @return mixed On seriously malformed URLs, parse_url() may return FALSE. */ static public function parseURL($url) { return parse_url($url); } /** * Un-Parse URL * * Convert PHP array to query string * * @param $url * @return string */ static public function unParseURL(array $url) { $scheme = isset($url['scheme']) ? $url['scheme'] . '://' : ''; $host = isset($url['host']) ? $url['host'] : ''; $port = isset($url['port']) ? ':' . $url['port'] : ''; $user = isset($url['user']) ? $url['user'] : ''; $pass = isset($url['pass']) ? ':' . $url['pass'] : ''; $pass = ($user || $pass) ? "$pass@" : ''; $path = isset($url['path']) ? $url['path'] : ''; $query = isset($url['query']) && !empty($url['query']) ? '?' . $url['query'] : ''; $fragment = isset($url['fragment']) ? '#' . $url['fragment'] : ''; return $scheme . $user . $pass . $host . $port . $path . $query . $fragment; } /** * Merge Query * * Merge array of params to query string * * @param $query1 * @param array $query2 * @return string */ static public function mergeQuery($query1, array $query2) { $parsed = []; parse_str($query1, $parsed); $parsed = array_merge($parsed, $query2); return http_build_query($parsed); } }