/** * Recess PHP Framework Entry Point * @param Request $request The raw Request. * @package recess * @static */ public static function main(Request $request, IPolicy $policy, RtNode $routes, array $plugins = array()) { static $callDepth = 0; static $calls = array(); $callDepth++; $calls[] = $request; if ($callDepth > 3) { print_r($calls); die('Forwarding loop in main?'); } $request = $policy->preprocess($request); $controller = $policy->getControllerFor($request, $routes); $response = $controller->serve($request); $view = $policy->getViewFor($response); ob_start(); $view->respondWith($response); if ($response instanceof ForwardingResponse) { $forwardRequest = new Request(); $forwardRequest->setResource($response->forwardUri); $forwardRequest->method = Methods::GET; if (isset($response->context)) { $forwardRequest->get = $response->context; } $forwardRequest->accepts = $response->request->accepts; $forwardRequest->cookies = $response->request->cookies; $forwardRequest->username = $response->request->username; $forwardRequest->password = $response->request->password; $cookies = $response->getCookies(); if (is_array($cookies)) { foreach ($response->getCookies() as $cookie) { $forwardRequest->cookies[$cookie->name] = $cookie->value; } } Recess::main($forwardRequest, $policy, $routes, $plugins); } ob_end_flush(); }
*/ $_ENV['dir.bootstrap'] = str_replace('\\', '/', realpath(dirname(__FILE__))) . '/'; $_ENV['url.base'] = str_replace('bootstrap.php', '', $_SERVER['PHP_SELF']); if (strpos($_SERVER['REQUEST_URI'], '/bootstrap.php') === 0) { exit; } $bootstrapped = true; require_once './recess-conf.php'; RecessConf::init(); Library::import('recess.diagnostics.Diagnostics'); set_error_handler(array('Diagnostics', 'handleError')); set_exception_handler(array('Diagnostics', 'handleException')); Library::import('recess.http.Environment'); Library::import('recess.Recess'); // Entry point to Recess Recess::main(Environment::getRawRequest(), RecessConf::$policy, RecessConf::getRoutes(), RecessConf::$plugins); // RecessConf follows... abstract class RecessConf { const DEVELOPMENT = 0; const PRODUCTION = 1; public static $mode = self::PRODUCTION; public static $recessDir = ''; public static $pluginsDir = ''; public static $appsDir = ''; public static $dataDir = ''; public static $useTurboSpeed = false; public static $cacheProviders = array(); public static $applications = array(); public static $plugins = array(); public static $defaultDatabase = array();