Ejemplo de creación y uso de una librería en CodeIgniter

  • Por
  • PHP
Vamos a crear una librería propia en CodeIgniter y luego vamos a cargarla desde un controlador y utilizar sus métodos.
En el anterior artículo del Manual de CodeIgniter vimos los pasos y especificaciones para crear nuestras propias librerías, con lo que será bueno detenerse a ver un ejemplo de una librería creada por nosotros mismos.

Vamos a hacer una librería con algunas funciones para convertir formatos de fechas. La funcionalidad en si no importa mucho, lo que nos interesa es ver cómo se hace. En el artículo continuaremos con el procedimiento para cargar la librería desde un controlador de CodeIgniter y utilizarla invocando sus métodos.

Librería propia en CodeIgniter: Conversor_fechas

Este sería el código de nuestra librería de ejemplo.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Conversor_fechas{
   
   ////////////////////////////////////////////////////
   //Convierte fecha de mysql a español
   ////////////////////////////////////////////////////
   function fecha_mysql_a_espanol($fecha){
      ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha);
      $lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1];
      return $lafecha;
   }

   ////////////////////////////////////////////////////
   //Convierte fecha de español a mysql
   ////////////////////////////////////////////////////
   function fecha_espanol_a_mysql($fecha){
      ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
      $lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
      return $lafecha;
   }
   
}

/* Fin del fichero */
/* No necesito cerrar PHP y de hecho no se recomienda para no insertar saltos de línea al final */

Como se puede ver, se ha creado una clase llamada "Conversor_fechas" (la "C" inicial en mayúsculas) y un par de funciones que serán las que nos aporte la librería cuando la carguemos.

La hemos guardado con el nombre de archivo "Conversor_fechas.php" (También la "C" en mayúsculas), en la siguiente ruta:

system/application/libraries

Controlador que carga la librería propia

Ahora podemos hacer un controlador para probar esta librería. Para ello creamos el archivo del controlador con un código como este:

<?php
class Convierto_fechas extends Controller {

   function index(){
      //creo una variable con una fecha
      $fecha = "21/07/2010";
      //cargo la librería para convertir fechas
      $this->load->library('conversor_fechas');
      //cambio la fecha de formato
      $fecha_formato_mysql = $this->conversor_fechas->fecha_espanol_a_mysql($fecha);
      //muestro la fecha (debería usar una vista)
      echo $fecha_formato_mysql;
      
      //convierto la fecha mysql a español
      $fecha_formato_espanol = $this->conversor_fechas->fecha_mysql_a_espanol($fecha_formato_mysql);
      //muestro la fecha (debería usar una vista)
      echo "<br>" . $fecha_formato_espanol;
   }
   
}
?>

Como ya debemos saber, el controlador lo debemos guardar en el directorio system/application/controllers y con el mismo nombre que la clase que hemos creado, con la extensión .php y en minúsculas: convierto_fechas.php.

Supongo que no será problema localizar el lugar del código donde se carga la librería:

$this->load->library('conversor_fechas');

Y el lugar donde utilizamos los métodos de la librería para acceder a sus funcionalidades:

$fecha_formato_mysql = $this->conversor_fechas->fecha_espanol_a_mysql($fecha);

Nota: En este controlador estamos escribiendo directamente en la página sin utilizar las vistas. Es sólo una prueba y CodeIgniter nos lo permite, pero no es una buena práctica. Deberíamos utilizar una vista.

La URL con la que acceder a este controlador dependerá un poco de donde tengas instalado tu CodeIgniter, pero so lo has puesto en la raíz de tu dominio podrías acceder a través de una URL como esta:

http://www.ejemplo.com/index.php/convierto_fechas/

O si hemos ocultado el index.php a través de un .htaccess:

http://www.ejemplo.com/convierto_fechas/

De momento hemos aprendido a crear una librería 100% desarrollada por nosotros e integrada dentro de nuestro CodeIgniter. En el siguiente artículo mostraremos un detalle importante que debemos implementar en nuestras librerías para acceder a los recursos del framework CodeIgniter desde el código de tus propias librerías.