예제 #1
0
 /**
  * Constructor for the evergreen class that sets up all the necessary parts of the framework so it can run.
  * 
  * @access public
  */
 public function __construct()
 {
     $starttime = microtime(true);
     try {
         // register the autoloaders
         Autoloader::register();
         // setup error handling
         set_error_handler(array("Config", "logError"), ini_get("error_reporting"));
         // load the main config.php file
         if (file_exists(Reg::get("Path.physical") . '/config/config.php')) {
             include_once Reg::get("Path.physical") . '/config/config.php';
         } else {
             echo "You are missing the configuration file and without it Evergreen cannot run.";
             exit;
         }
         // load the main errors.php file
         if (file_exists(Reg::get("Path.physical") . '/config/errors.php')) {
             include Reg::get("Path.physical") . '/config/errors.php';
         }
         // check if the welcome content is present and if it is show it
         if (file_exists(Reg::get("Path.physical") . '/public/welcome.php')) {
             // Load the welcome content
             include Reg::get("Path.physical") . '/public/welcome.php';
             exit;
         }
         // code that is run at the exit of the script
         register_shutdown_function(array($this, 'shutdown'), $starttime);
         // process the uri and setup the Reg variables
         Config::processURI();
         // wait till after all the config files are loaded before loading in the autoload files
         Autoloader::loadFiles();
         // build the controller class name
         $load['name'] = Config::uriToClass(Reg::get("URI.working.controller"));
         if (Reg::hasVal("Branch.name")) {
             $load['branch'] = Config::uriToClass(Reg::get("Branch.name"));
         }
         $load['type'] = 'Controller';
         $load = implode('_', $load);
         // create an instance of the controller
         $controller = new $load();
         // run the _showView method in the loaded controller
         $controller->_showView();
     } catch (EvergreenException $e) {
         // handler for the EvergreenException class
         $e->processError();
     } catch (Exception $e) {
         // handler for general exceptions
         if (Config::read("System.mode") != "development") {
             echo Config::read("Error.generalErrorMessage");
             exit;
         } else {
             echo $e;
         }
     }
 }