<?php

class JSONRespuesta
{
  private $codigoDeRespuesta = -1;
  private $datos = null;
  private $mensaje = '';

  public function __construct($unCodigo=-1, $unMensaje=null, $unosDatos=null)
  {
    $this->codigoDeRespuesta = $unCodigo;
    $this->datos = $unosDatos;
    $this->mensaje = $unMensaje;
  }

  private static function utf8Encode(&$array) 
  {
    if (is_string($array))
    {
      $array = utf8_encode($array);
    }
    elseif (is_array($array) and count($array) > 0)
    {
      foreach ($array as $k => $v)
      {
        self::utf8Encode($array[$k]);
      }
    }
  }

  private function mostrarEncabezado()
  {
    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json; charset=utf-8');
  }

  private function mostrarCuerpo()
  {
    $respuesta = array( 'codigo' => $this->codigoDeRespuesta, 'mensaje' => ($this->mensaje), 'datos' => $this->datos );
    self::utf8Encode($respuesta);
    echo json_encode($respuesta);
  }

  public function mostrar()
  {
    if ($this->datos !== null and !is_array($this->datos) )
    {
      $this->datos = array($this->datos);
    }
    $this->mostrarEncabezado();
    $this->mostrarCuerpo();
    die();
  }

}

