CodeIgniter 4 Librería lectura JSON

Veamos un pequeño ejemplo de creación de una libreria en CodeIgniter 4 para la lectura de de contenidos JSON.

Tutorial CodeIgniter
Tutorial CodeIgniter

Como ya vimos y siguiendo con los ejemplos, creación de librerías propias en CodeIgniter y uso de librerías propias en CodeIgniter, veremos cómo crear una pequeña librería que lee un hilo JSON y lo devuelve en formato Array para poderlo trabajar más cómodamente.

La previa

Vamos a crear una pequeña librería que leerá de un enlace, un fichero en formato JSON. Lo importante es que esta librería leerá el fichero, lo transformará a una Array para que se pueda trabajar des de nuestra aplicación.

Lo importante, es que sepáis cómo está formado el JSON para luego poder accder a la Array

La librería JSON en CodeIgniter 4

Nuestra librería, la tendremos en:

/app/Libraries/Myjson.php

Y el código es el siguiente:

<?php namespace App\Libraries;
class Myjson
{
  protected $myjson;

  public function __construct()
  {
  }

  public function importJsonUrl($url)
  {
    // ini_set("allow_url_fopen", 1);
    $jsontmp = file_get_contents($url);
    $this->myjson = json_decode($jsontmp, true);
  }

  public function getMyJson()
  {
    return $this->myjson;
  }

}
/**
 * -----------------------------------------------------------------------
 * Filename: Myjson.php
 * Location: ./app/Libraries/Myjson.php
 * -----------------------------------------------------------------------
 */

Uso de la librería

Y aquí nuestro controlador que lee, utilizando la librería, la url con el JSON, lo transforma en Array, y lo transforma en contendio HTML que envía a la vista.

<?php namespace App\Controllers;

use App\Libraries\Myjson;
use CodeIgniter\Controller;

/**
 * Class Home
 *
 * Clase provisional de la home que muestra datos.
 *
 * @package CodeIgniter
 */

class Home extends BaseController
{
  private $importurl;
  private $misnoticias;

  public function __construct()
  {
    $this->importurl = "https://enlacejson.pro/devuelvo-jason/579";
  }

  public function index()
  {
    // Llamo a la función que importa la url (está parte inferior)
    $this->loadUrlImport();
    $data = [
      'noticias' => $this->getPrintNoticias()
    ];
    echo view('template_header');
    echo view('home', $data);
    echo view('template_footer');
  }

  /**
    * Carga JSON Url en Array
  */

  public function loadUrlImport()
  {
    $myjson = new Myjson();
    $myjson->importJsonUrl($this->importurl);

    $this->misnoticias= $myjson->getMyJson();
  }

 /**
  * Imprimimos en formato HTML las noticias
  */
  
  public function getPrintNoticias()
  {
    $noticiastmp= "";

    if(!empty($this->misnoticias) && is_array($this->misnoticias))
    {
	foreach ($this->misnoticias as $ent)
	{
	  $noticiastmp .= "<div class='row'>";
	  $noticiastmp .= "<br />". $ent["id"];
	  $noticiastmp .= "<br />". $ent["titular"];
	  $noticiastmp .= "<br />". $ent["fecha"];
	  $noticiastmp .= "<br />". $ent["contenido"];
	  $noticiastmp .= "</div>";
	}
    } else {
	$noticiastmp .= "<p>No hay registros</p>";
    }
    return $noticiastmp;
  }

}

/* End of file Home.php */
/* Location: ./app/Controllers/Home.php */

Aquí las dos funciones importantes de nuestro controlador son:

loadUrlImport()

Es la función que utiliza nuestra librería JSON, Se encarga de importar la JSON y converitr en Array.

getPrintNoticias()

Una vez convertida en Array ($misnoticias), y como sabemos la estructura del JSON y cómo se transforma en Array, podemos recorrer la Array montando el HTML que devolvemos en un simple listado.

Espero que os permita hacer vuestra propia librería CodeIgniter 4 para la lectura de JSON.


Más información