"text/html"), "Not Found"); } public static function run () { // build ENV self::$env =& $_SERVER; if ( strstr($_SERVER['REQUEST_URI'], '?') ) { self::$env["PATH_INFO"] = substr($_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'], '?')); } else { self::$env["PATH_INFO"] = $_SERVER['REQUEST_URI']; } self::$env["request.vars"] =& $_REQUEST; self::$env["request.get"] =& $_GET; self::$env["request.post"] =& $_POST; self::$env["request.files"] =& $_FILES; self::$env["request.method"] =& $_SERVER["REQUEST_METHOD"]; self::$env["cookies"] =& $_COOKIE; // construct middlewares self::$constructed = true; $middleware = array_reverse(self::$middleware); $previous = null; foreach( $middleware as $key => $value ) { self::$middleware[$key] = new $key($previous); $previous =& self::$middleware[$key]; } // call the middleware stack reset(self::$middleware); $first = current(array_keys(self::$middleware)); list($status, $headers, $body) = self::$middleware[$first]->call(self::$env); // send headers header(self::$env["SERVER_PROTOCOL"]." ".$status); foreach( $headers as $key => $value ) { header($key.": ".$value); } // output any buffered content from middlewares $buffer = ob_get_contents(); ob_end_clean(); if ( !empty($buffer) ) { echo $buffer; } // output body if ( is_array($body) ) { echo implode("", $body); } else { echo $body; } } private static function require_file ($file = null) { if ( $file != null && is_file($file) ) { require($file); } } } ?>