lunes, 4 de agosto de 2014

Creación de librerías en Codeigniter

Las librerías son clases que permiten la re utilización de código para evitar duplicidades, ya que una librería no es más que un conjunto de funciones que se pueden llegar a utilizar varias veces en un mismo código.

Las librerías en Codeigniter tienen esa misma función, ya que el core de dicho framework ya viene previsto de librerías muy útiles como por ejemplo la conexión a la base de datos, el envío de emails, encriptación de cadenas, entre otras.

Aunque estas librerías ya esten hechas, el framework nos permite crear librerías nuevas o incluso extender esa librerías en el caso de que quisiéramos añadir alguna funcionalidad extra.

Todas las clases que desarrollemos tienen que estar situadas dentro de la carpeta: application/libraries

Por convención si nuestra clase tiene que tener el nombre de email, el fichero se debería de llamar: MY_library.php.
(Mas adelante os explicaré el motivo).

La estructura de dichas clases es la siguiente:

En el caso de que sea una librería propia, que no extienda de ninguna librería del core sería de la siguiente forma:


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

class MY_Library { 
     public function __construct($params) 
     { 
          // Do something with $params 
     } 


?>

En el caso de que nuestra librería amplie la funcionalidades de una librería del core del Codeigniter, la declaración de la clase es parecida a la declaración anterior con una sola diferencia, se ha de añadir el concepto extends.


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

class MY_Email extends CI_Email { 
     public function __construct() 
     { 
          parent::__construct();       
     } 


Una vez declaradas las librerías, lo que se debe hacer es cargarlas en el framework.
Se puede hacer de dos formas diferentes:

  1. Añadiendo la librería en el archivo de configuración autoload.php
  2. Cargando la librería en el propio controlador donde se vaya a utilizar
Si es una librería propio que no extiende de ninguna clase de Codeigniter, la forma de cargar la librería es la siguiente:

$this->load->library('MY_Library'); //desde el controlador
$autoload['libraries'] = array('MY_Library'); //desde el fichero de configuración autoload.php

En cambio si la librería extiende de una clase de Codeigniter como por ejemplo la librería email, que ya existe en el core, simplemente se ha de cargar llamando a la librería por su nombre original.

$this->load->library('email'); //desde el controlador
$autoload['libraries'] = array('email'); //desde el fichero de configuración autoload.php

Porque el prefijo MY_

El prefijo MY_ es un prefijo que viene dado en la configuración de Codeigniter en el archivo de configuración config.php.

$config['subclass_prefix'] = 'MY_';

Este prefijo es modificable a pesar de que yo aconsejo dejarlo por el que viene por defecto, y lo utiliza Codeigniter para saber si es una clase propia que extiende de una clase core.
Aunque la primera librería que hemos creado MY_Library no extiende de ninguna, aconsejo que todas las librerías que desarrolléis tengan la misma forma, para no causar confuciones.

No hay comentarios:

Publicar un comentario