/** * run **/ public function run($yield = null) { if (php_sapi_name() == 'cli-server') { if (is_file(route::$BASEPATH . str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['REQUEST_URI'])) && file_exists(route::$BASEPATH . str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['REQUEST_URI'])) && substr(strtolower($_SERVER['REQUEST_URI']), -4) != '.php') { readfile(route::$BASEPATH . str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['REQUEST_URI'])); return TRUE; } } if (is_callable($yield)) { $this->callable = \Closure::bind($yield, $this, get_class()); } if (self::$fullrender != '') { if (is_callable($this->callable)) { //** Run Middleware Before while (list($idx_mw, $middleware) = each($this->middleware['before'])) { $middleware($this, $this->request); } ob_start(); $response = call_user_func_array($this->callable, $this->route->getParams()); $result = ob_get_clean(); $response = empty($response) || is_bool($response) ? $result : $response . $result; if (count(self::$header) > 0 && php_sapi_name() != 'cli') { while (list($idx_header, $headerValue) = each(self::$header)) { header($headerValue); } } //** Run Middleware After while (list($idx_mw, $middleware) = each($this->middleware['after'])) { $middleware($this, $this->request); } //** Replace Tag ob_start(); include $this->config->get('path.basepath') . $this->config->get('path.template') . '/' . self::$fullrender . '.php'; self::$fullrender = ob_get_clean(); $config = $this->config; self::$fullrender = preg_replace_callback(array('/(\\\\)?' . addslashes($this->config->get('template.open_tag')) . '=?' . '/', '/(\\\\)?' . addslashes($this->config->get('template.close_tag')) . '/'), function ($s) use($config) { if (isset($s[0])) { if (isset($s[1]) && $s[1] == '\\') { return substr($s[0], 1); } elseif ($s[0] == $this->config->get('template.open_tag')) { return '<?php '; } elseif ($s[0] == '{{=') { return '<?php echo '; } elseif ($s[0] == $this->config->get('template.close_tag')) { return '?>'; } } }, self::$fullrender); self::$fullrender = str_replace(['@js', '@css'], [$this->assets->js->render(), $this->assets->css->render()], self::$fullrender); self::$fullrender = str_replace(['@yield', '@response'], [$response, $response], self::$fullrender); //-- END Replace Tag eval('?>' . self::$fullrender); //echo $result; } else { if (php_sapi_name() != 'cli') { header($_SERVER["SERVER_PROTOCOL"] . ' ' . Route::$HTTP_RESPONSE[404]); } if ($this->config->get('error.404') != '') { include $this->config->get('path.template') . '/' . $this->config->get('error.404') . '.php'; } else { die(Route::$HTTP_RESPONSE[404]); } } self::$fullrender = ''; } else { if (is_callable($this->callable)) { //** Run Middleware Before while (list($idx_mw, $middleware) = each($this->middleware['before'])) { $middleware($this, $this->request); } ob_start(); $response = call_user_func_array($this->callable, $this->route->getParams()); $result = ob_get_clean(); $response = empty($response) || is_bool($response) ? $result : $response . $result; if (count(self::$header) > 0 && php_sapi_name() != 'cli') { while (list($idx_header, $headerValue) = each(self::$header)) { header($headerValue); } } //** Run Middleware After while (list($idx_mw, $middleware) = each($this->middleware['after'])) { $middleware($this, $this->request); } echo $response; //echo $result; } else { if (php_sapi_name() != 'cli') { header($_SERVER["SERVER_PROTOCOL"] . ' ' . Route::$HTTP_RESPONSE[404]); } if ($this->config->get('error.404') != '') { include $this->config->get('path.template') . '/' . $this->config->get('error.404') . '.php'; } else { die(Route::$HTTP_RESPONSE[404]); } } } }
public function render($file, $response = "") { ob_start(); include $file; self::$fullrender = ob_get_clean(); $config = $this->config; self::$fullrender = preg_replace_callback(array('/(\\\\)?' . addslashes($this->config->get('template.open_tag')) . '=?' . '/', '/(\\\\)?' . addslashes($this->config->get('template.close_tag')) . '/'), function ($s) use($config) { if (isset($s[0])) { if (isset($s[1]) && $s[1] == '\\') { return substr($s[0], 1); } elseif ($s[0] == $this->config->get('template.open_tag')) { return '<?php '; } elseif ($s[0] == '{{=') { return '<?php echo '; } elseif ($s[0] == $this->config->get('template.close_tag')) { return '?>'; } } }, self::$fullrender); self::$fullrender = str_replace(['@js', '@css'], [$this->assets->js->render(), $this->assets->css->render()], self::$fullrender); if (!empty($response)) { self::$fullrender = str_replace(['@yield', '@response'], [$response, $response], self::$fullrender); } //-- END Replace Tag ob_start(); eval('?>' . self::$fullrender); self::$fullrender = ob_get_clean(); return self::$fullrender; }