/**
  * Encodes data
  * @param  any 	$data      Data to output
  * @param  string $output  Custom output to render. Defaults defined.
  * @param  bool   $cached  Returns cached status.
  * @return string          Encoded string
  */
 public static function encode($data, $output = DEFAULT_OUTPUT, $cached = FALSE)
 {
     self::set_headers($output);
     $return["status"] = http_response_code();
     $return["elapsed_time"] = 0;
     if (ENVIRONMENT !== "prod") {
         $return["cached"] = $cached;
     }
     $return["data"] = $data;
     if (class_exists("Stopwatch")) {
         Stopwatch::stop();
         $return["elapsed_time"] = Stopwatch::get_elapse();
     }
     switch ($output) {
         case "json":
             return json_encode($return);
         case "xml":
             $output = '<?xml version="1.0" encoding="UTF-8"?><response>';
             $output .= self::XML_encode($return);
             $output .= '</response>';
             return $output;
         default:
             throw new APIexception("Output not supported", 7, 400);
     }
 }