Beispiel #1
0
 /**
  * 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]);
             }
         }
     }
 }
Beispiel #2
0
 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;
 }