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