/**
  * Obtiene una instancia de un objeto de conexion a la base de datos
  * @param array $parametros
  * @return \mysqli Mysqli Instance
  * @throws string
  */
 public static function getInstance(array $parametros = array())
 {
     if (self::$instance) {
         return self::$instance;
     }
     $parametrosRequeridos = array("host", "user", "pass", "db");
     \Validator::validateArrayKeys($parametrosRequeridos, $parametros);
     if (!array_key_exists("port", $parametros)) {
         $parametros["port"] = 3306;
     } elseif (empty($parametros["port"])) {
         $parametros["port"] = 3306;
     }
     $mysqli = new \MySQLi(\Validator::emptyString($parametros["host"]), \Validator::emptyString($parametros["user"]), $parametros["pass"], \Validator::emptyString($parametros["db"]), \Validator::int($parametros["port"]));
     if ($mysqli->connect_error) {
         $msg = "No se pudo conectar a la base de datos " . $mysqli->connect_errno . ':' . $mysqli->error;
         throw new Exception($msg);
     }
     $mysqli->set_charset("utf8");
     self::$instance = $mysqli;
     return self::$instance;
 }