/** * Creates instance of App class and initialize the application * * @param array $params initialization parameters * @return void * @static */ public static function create(array $params = null) { self::$app_mode = self::MODE_DEVELOPMENT; if (is_null(self::$instance)) { self::$instance = new self(); } // setting up autoloader spl_autoload_register(array('App', 'autoload')); try { // setup config Config::create(isset($params['config']) ? $params['config'] : null); Config::setVar($params); // application mode self::setMode(Config::getVar('mode', self::MODE_DEVELOPMENT)); // our error handler if (!self::isDevMode()) { set_error_handler(array('App', 'handleErrors')); } // language specific params if (function_exists('mb_internal_encoding')) { mb_internal_encoding(Config::getVar('app_encoding', 'UTF-8')); } if (function_exists('date_default_timezone_set')) { date_default_timezone_set(Config::getVar('app_timezone', 'UTC')); } setlocale(LC_CTYPE, Config::getVar('app_locale', 'en_US.UTF-8')); // creating base objects Log::create(); Request::create(); // saving application params self::$params = $params; // unregister globals if (ini_get('register_globals')) { self::unregisterGlobals(array('_POST', '_GET', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES')); ini_set('register_globals', false); } } catch (Exception $e) { self::$instance->handleDefaultException($e); } }