Cómo reemplazar el código por completo de las librerías de CodeIgniter y cómo extenderlo con nuevas funcionalidades.
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:
- Reemplazar código de una librería nativa por otro totalmente nuevo
- Extender el código de una librería nativa
Reemplazar el código de una librería con tu propia versión
En el momento de escribir este artículo en CodeIgniter podemos reemplazar el código de cualquier librería excepto la de trabajo con bases de datos "Database". Esto lo podemos hacer simplemente haciendo una librería que tenga el mismo nombre que la librería que pretendemos reemplazar.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.
Extender las librerías nativas de CodeIgniter
Ahora vamos a ver un caso si cabe más probable. Imagina que quieras quieras que permanezca la funcionalidad de una librería y agregarle un par de funciones. Para esto no necesitas reemplazar el código completo de esa librería, sino simplemente extenderla con algunas funciones propias que solventen tus necesidades particulares.
El proceso es bastante parecido al de reemplazar por completo el código de la librería, excepto por un par de cosas:
- La declaración de la nueva clase debe extender la clase original
- Tu nueva clase debe tener el prefijo "MY_" (aunque esto se puede configurar)
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".
class MY_Calendar extends CI_Calendar {
function My_Calendar(){
parent::CI_Calendar();
}
}
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...
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...