Desarrolladores un poco más avanzados desearán en algún momento mejorar o cambiar algo en las librerías nativas de CodeIgniter. Esto es perfectamente posible en este framework PHP y para ello han puesto a nuestra disposición dos maneras de actuar:
La guardaremos en el directorio de nuestras propias librerías: system/application/libraries y le damos el nombre de la librería que queremos sustituir. Por ejemplo, si queremos reemplazar la librería Calendar, guardaríamos nuestro archivo como "Calendar.php".
El nuevo código de la librería sería el que nosotros queramos, sólo tenemos que respetar el nombre de la librería original:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class CI_Calendar{
protected $ci;
function __construct(){
$this->ci =& get_instance();
}
function algo(){
//lo que sea...
}
}
Ahora, cuando carguemos la librería nativa Calendar en realidad se estará cargando el código que hemos definido nosotros en esa nueva clase.
$this->load->library('calendar');
$this->calendar->algo();
//$this->calendar->generate(); daría error, pues ya no existe ese método.
El proceso es bastante parecido al de reemplazar por completo el código de la librería, excepto por un par de cosas:
Este sería el código para extender la libería Calendar.
class MY_Calendar extends CI_Calendar {
}
Tendríamos que guardar ese archivo en el directorio de las librerías (system/application/libraries) y darle el nombre "MY_Calendar.php".
La carga de la clase de la librería extendida se hace igual que para la librería original, sin utilizar el prefijo "MY_". A partir de entonces tendrás la clase original más las funciones con las que la has extendido.
$this->load->library('calendar');
$this->calendar->mifuncion_extendida();
Con esto ya hemos aprendido todo lo que debíamos conocer acerca de crear tus librerías con CodeIgniter y extender o reemplazar las existentes. Más adelante conoceremos cómo extender o reemplazar las clases del núcleo de CodeIgniter, como pueden ser Controller, Config...