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.

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






