| 
					
				 | 
			
			
				@@ -15,22 +15,29 @@ require 'bootstrap/core.php'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 date_default_timezone_set(Config::$items['application']['timezone']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Create the exception handler function. All of the error handlers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * registered by the framework call this closure to avoid duplicate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * code. This Closure will determine if the logging Closure should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * be called, and will pass the exception to the developer defined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * handler in the configuration file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Create the exception logging function. All of the error logging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * is routed through here to avoid duplicate code. This Closure 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * will determine if the actual logging Closure should be called. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$handler = function($exception) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$logger = function($exception) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	$config = Config::$items['error']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if ($config['log']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (Config::$items['error']['log']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		call_user_func($config['logger'], $exception); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		call_user_func(Config::$items['error']['logger'], $exception); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Create the exception handler function. All of the error handlers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * registered by the framework call this closure to avoid duplicate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * code. This Closure will pass the exception to the developer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * defined handler in the configuration file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$handler = function($exception) use ($logger) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	$logger($exception); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if ($config['detail']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (Config::$items['error']['detail']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo "<html><h2>Unhandled Exception</h2> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			  <h3>Message:</h3> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,22 +62,29 @@ $handler = function($exception) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 set_exception_handler(function($exception) use ($handler) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	$handler($exception);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	$handler($exception); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Register the PHP error handler. All PHP errors will fall into this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * handler, which will convert the error into an ErrorException object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * and pass the exception into the common exception handler. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * and pass the exception into the common exception handler. Suppressed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * errors are ignored and errors in the developer configured whitelist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * are silently logged. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-set_error_handler(function($number, $error, $file, $line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+set_error_handler(function($number, $error, $file, $line) use ($logger) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (error_reporting() === 0 or in_array($number, Config::$items['error']['ignore'])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (error_reporting() === 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	throw new \ErrorException($error, $number, 0, $file, $line); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	$exception =  new \ErrorException($error, $number, 0, $file, $line); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (in_array($number, Config::$items['error']['ignore'])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$logger($exception); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	throw $exception; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -221,4 +235,4 @@ if (Config::$items['session']['driver'] !== '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	IoC::core('session')->save($driver); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$response->send(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$response->send(); 
			 |