original_string: public function error($reason=null, $code=response::STATUS_INTERNAL_SERVER_ERROR, $user_message=null) {
  	$response = bootstrap::get_library('response');
  	
  	$error_data = [
  		'status_code'    => $code,
  		'status_message' => $response::get_status_message($code),
  	];
  	$error_data['status_code_is_'.$code] = true;
  	
  	if ($user_message) {
  		$error_data['user_message'] = $user_message;
  	}
  	if (ENVIRONMENT == 'development') {
  		$error_data['development'] = true;
  		
  		if ($reason) {
  			$error_data['reason'] = $reason;
  		}
  	}
  	
  	if (!empty($this->data['exception']['current'])) {
  		if ($this->data['exception']['current'] instanceof \alsvanzelf\fem\exception) {
  			if (empty($error_data['user_message'])) {
  				$error_data['user_message'] = $this->data['exception']['current']->getUserMessage();
  			}
  			
  			$error_data['user_action'] = $this->data['exception']['current']->getUserAction();
  		}
  		
  		if (ENVIRONMENT != 'development') {
  			unset($this->data['exception']);
  		}
  	}
  	
  	$response::send_status($code);
  	
  	if (empty(static::$default_error_template)) {
  		$page_data = [
  			'error' => $error_data,
  		];
  		if (!empty($this->data['exception'])) {
  			$page_data['exception'] = $this->data['exception'];
  		}
  		
  		static::show_default_error($page_data);
  	}
  	else {
  		$this->data['title'] = $error_data['status_message'];
  		$this->data['error'] = $error_data;
  		
  		$this->show(static::$default_error_template);
  	}
  	
  	die;
  }
code: public function error($reason=null, $code=response::STATUS_INTERNAL_SERVER_ERROR, $user_message=null) {
  	$response = bootstrap::get_library('response');
  	
  	$error_data = [
  		'status_code'    => $code,
  		'status_message' => $response::get_status_message($code),
  	];
  	$error_data['status_code_is_'.$code] = true;
  	
  	if ($user_message) {
  		$error_data['user_message'] = $user_message;
  	}
  	if (ENVIRONMENT == 'development') {
  		$error_data['development'] = true;
  		
  		if ($reason) {
  			$error_data['reason'] = $reason;
  		}
  	}
  	
  	if (!empty($this->data['exception']['current'])) {
  		if ($this->data['exception']['current'] instanceof \alsvanzelf\fem\exception) {
  			if (empty($error_data['user_message'])) {
  				$error_data['user_message'] = $this->data['exception']['current']->getUserMessage();
  			}
  			
  			$error_data['user_action'] = $this->data['exception']['current']->getUserAction();
  		}
  		
  		if (ENVIRONMENT != 'development') {
  			unset($this->data['exception']);
  		}
  	}
  	
  	$response::send_status($code);
  	
  	if (empty(static::$default_error_template)) {
  		$page_data = [
  			'error' => $error_data,
  		];
  		if (!empty($this->data['exception'])) {
  			$page_data['exception'] = $this->data['exception'];
  		}
  		
  		static::show_default_error($page_data);
  	}
  	else {
  		$this->data['title'] = $error_data['status_message'];
  		$this->data['error'] = $error_data;
  		
  		$this->show(static::$default_error_template);
  	}
  	
  	die;
  }
code_tokens: public function error ( $ reason = null , $ code = response :: STATUS_INTERNAL_SERVER_ERROR , $ user_message = null ) { $ response = bootstrap :: get_library ( 'response' ) ; $ error_data = [ 'status_code' => $ code , 'status_message' => $ response :: get_status_message ( $ code ) , ] ; $ error_data [ 'status_code_is_' . $ code ] = true ; if ( $ user_message ) { $ error_data [ 'user_message' ] = $ user_message ; } if ( ENVIRONMENT == 'development' ) { $ error_data [ 'development' ] = true ; if ( $ reason ) { $ error_data [ 'reason' ] = $ reason ; } } if ( ! empty ( $ this -> data [ 'exception' ] [ 'current' ] ) ) { if ( $ this -> data [ 'exception' ] [ 'current' ] instanceof \ alsvanzelf \ fem \ exception ) { if ( empty ( $ error_data [ 'user_message' ] ) ) { $ error_data [ 'user_message' ] = $ this -> data [ 'exception' ] [ 'current' ] -> getUserMessage ( ) ; } $ error_data [ 'user_action' ] = $ this -> data [ 'exception' ] [ 'current' ] -> getUserAction ( ) ; } if ( ENVIRONMENT != 'development' ) { unset ( $ this -> data [ 'exception' ] ) ; } } $ response :: send_status ( $ code ) ; if ( empty ( static :: $ default_error_template ) ) { $ page_data = [ 'error' => $ error_data , ] ; if ( ! empty ( $ this -> data [ 'exception' ] ) ) { $ page_data [ 'exception' ] = $ this -> data [ 'exception' ] ; } static :: show_default_error ( $ page_data ) ; } else { $ this -> data [ 'title' ] = $ error_data [ 'status_message' ] ; $ this -> data [ 'error' ] = $ error_data ; $ this -> show ( static :: $ default_error_template ) ; } die ; }
docstring: show an error page
  
  @param  string $reason       technical description, only shown on development environments
  @param  int    $code         http status code, @see response::STATUS_*
  @param  string $user_message optional, human-friendly message to show to the user
  @return void                 script execution terminates
docstring_tokens: show an error page