Example #1
0
 /**
  * __construct
  *
  * Paulus constructor
  * 
  * @param array $config		Configuration array defining Paulus' many options
  * @access public
  * @return Paulus
  */
 public function __construct(array $config = null)
 {
     // First things first... get our init time
     if (!defined('PAULUS_START_TIME')) {
         define('PAULUS_START_TIME', microtime(true));
     }
     // Define our application's constants
     $this->define_constants();
     // Set our application's configuration from our Config instance
     $this->config = Config::instance();
     // If we passed a config, let's merge it in
     if (!is_null($config)) {
         Config::instance()->merge_custom_config($config);
     }
     // Create our auto loader
     $autoloader = new AutoLoader($this->config);
     // Load our all-important routing library
     $autoloader->load_routing_library();
     // Create a "first-hit" route responder to setup our app
     Router::route(function ($request, $response, $service) {
         // Initialize our router's interval values
         Router::__init__($request, $response, $service, $this);
         // Set some properties from our router
         $this->request =& $request;
         $this->response =& $response;
         $this->service =& $service;
         // Initialize some response properties
         $this->init_response_properties();
         // Setup our exception handler
         $this->setup_exception_handler();
         // Handle any JSON request bodies
         $this->handle_json_request();
         // Only pass our "app" to the service register if we've configured it to do so
         if ($this->config['routing']['pass_app_to_service']) {
             // Register our app as a persistent service, for ease of use/accessibility
             $service->app = $this;
         }
     });
     // If there are autoload directories set
     if (isset($this->config['autoload-directories']) && count($this->config['autoload-directories']) > 0) {
         // Register our external autoloader
         $autoloader->register_external_autoloader();
     }
     // Load any set external libraries explicitly
     if (isset($this->config['external-libs']) && count($this->config['external-libs']) > 0) {
         // Load our external libraries explicitly
         $autoloader->explicitly_load_externals();
     }
     // Let's setup our database connection
     $this->setup_db_connection();
     // Load and define all of our routes
     $autoloader->load_routes();
 }