¿Que son las librerías en CodeIgniter ¿ ¿y los helper?

Las librerías son un conjunto de funcionalidades que comparte información entre ellas. Mientras, un helper es un conjunto de funcionalidades que no comparten información, por ejemplo el helper url, form…
En este post nos centraremos únicamente en las librerías, pero quería que quedara muy clara la diferencia entre los helper y librerías en CodeIgniter, ya que a veces hay confusión

Crear librerías en CodeIgniter

Para crear una librería en CodeIgniter hay que seguir una serie de normas:
-El nombre del archivo de la librería tiene que empezar siempre por mayúsculas: Mi_libreria
-se declara como con: class Mi_libreria
-el nombre del archivo y la clase tienen que coincidir
-el archivo nuevo tiene que guardarse dentro de /application/libraries

<?php Class Mi_libreria { Protected $ci; public function __construct() { $this ->ci =& get_instance(); // esto se explica al final del articulo 
}
Public function Mi_libreria()
{
// Contenido
}
}

Extender librerías en CodeIgniter

Para extender una librería propia de CodeIgniter y añadirle cosas nuevas hay dos normas a seguir:
-la librería debe de extender la clase padre
-Tanto el nuevo archivo como la librería nueva, tiene que tener el prefijo MY_
-Se tiene que solapar el constructor principal de la clase que heredamos
-el archivo nuevo tiene que guardarse dentro de /application/libraries

<?php Class MY_Encrypt extends CI_Encrypt { Public function __construct() { Parent::__construct() } } ?>

Reemplazar librerías por completo

Reemplazar una librería en CodeIgniter es una locura pero se puede hacer, exceptuando las librerías que llaman a las bases de datos.
Remplazar una librería es un proceso muy complejo en CodeIgniter pero simple de empezar, solo tendremos que crear una librería con exactamente el mismo nombre que la librería que queremos reemplazar
Pero como he dicho reemplazar una librería en CodeIgniter es una locura, en este post solo diré que es posible sin explicar cómo exactamente.

Acceder a los recursos de CodeIgniter dentro de las librerías

Normalmente para acceder a recursos de CodeIgniter normalmente usamos $this->.
$this->load-helper(‘text’);
$this->load-library(‘email’);

Pero las librerías no tienen instanciados estos recursos de CodeIgniter, para eso tendremos que llamar al súper objeto de CodeIgniter y hacer uso de ese súper objeto, para así tener los recursos de CodeIgniter a nuestra disposición.
Para instanciar el súper objeto de CodeIgniter se hace de la siguiente manera
$CI=& get_instance();
A partir de este momento ya tendremos a nuestra disposición los recursos de CodeIgniter pero en vez de utilizar $this utilizaremos $CI.
-$CI->load-helper(‘text’);
-$CI->load-library(‘email’);