Qué son las librerías, cómo cargar y las fundamentales al momento de crear un sistema en CodeIgniter 3
- Andrés Cruz
En esta entrada hablaremos de algunas librerías fundamentales por mi persona al momento de crear proyectos sobre todo de carácter administrativos empleando CodeIgniter como framework de desarrollo PHP; estas funcionalidades son prácticamente imprescindible en cualquier aplicación web sin importar si es de pequeña o gran envergadura nuestro proyecto.
Pero antes de eso debemos saber que es una librería; una librería.
¿Qué son las librerías en CodeIgniter?
Las librerías son un medio fundamental para extender funcionalidades al framework; muchos componentes con los cuales no cuenta el framework puede ser extendido empleando librerías; aunque también tenemos los helper para CodeIgniter las librerías vienen siendo un poco más que esto, unos helper con más vitaminas con los cuales podemos implementar clases siguiendo la programación orientada a objetos (POO); esto ya es si decidimos nosotros crear nuestras propias librerías.
Por supuesto CodeIgniter cuenta con una cantidad importante de librerías que nosotros podemos emplear con tan solo instalar el framework: CodeIgniter Libraries para hacernos la vida más facil y no tener que crear nosotros elementos que son muy común y genéricos al momento de crear una aplicación.
Librerías del core de CodeIgniter
Cómo puedes consultar en el enlace anterior, tenemos librerías para los uso más comunes, trabajar con las imágenes en CodeIgniter, las Output Class para cambiar los encabezados HTTP según sea el tipo de dato devuelto, los Template Parse Class para definir el esqueleto de nuestra aplicación, o el layout base de la misma, una librería para enviar emails desde CodeIgniter e inclusive otras para trabajar con las el FTP, creación y validación de formularios y mucho más.
Estas son algunas de las librerías más importante y que personalmente siempre uso en mis proyectos; son fundamentales para cualquier app web con CodeIgniter, son muy fáciles de emplear, extensibles y personalizables por nosotros; aunque se echa de menos una librería para la autenticación.
Cargar librerías en CodeIgniter
Para emplear casi cualquier componente de CodeIgniter, tenemos que especificarlo que en otras palabras significa cargarlo; aquí inicializamos y cargamos la librería:
$this->load->library('someclass');
Por ejemplo, para realizar la carga de la librería de emails:
$this->load->library(email);
Aunque este es el punto fuerte de CodeIgniter y es que al trabajar solo con los componentes necesarios hace que su tiempo de respuesta sea bastante rápido en comparación con otros framework.
Cargar librerías en otros componentes que no sean controladores, modelos o vistas
Como ya debes saber si empleas CodeIgniter, el $this
solo funciona dentro de los controladores, modelos y vistas, si queremos acceder al $this
desde los helpers u otras librerías; por ejemplo para realizar las cargas anteriores, debemos de emplear el método:
$CI =& get_instance();
Por ejemplo, desde un helper, si queremos acceder a la librería de sesiones:
$CI =& get_instance();
$CI->load->library('session');
En vez de:
$this->load->library('session');
Con esto podemos llamar a todos los métodos que queramos que correspondan a esa librería.
Carga automática de librerías en CodeIgniter
Aunque este proceso de cargar librerías de forma manual en cada componente que vayamos a emplear puede convertirse en algo tediosos, por ejemplo, la base de datos, que la empleamos en toda la aplicación y si tenemos 50 controladores y si en los 50 tendremos que colocarla manualmente, pues esto se convierte en un dolor de cabeza; para esos casos, CodeIgniter emplea un archivo ubicado en:
system/application/config/autoload.php
Que permite definir mediante un array las librerías que vamos a emplear:
$autoload['libraries'] = array('database', 'form_validation','someclass');
En definitiva, podemos cargar cualquier librería desde este archivo de manera automatizada y global en nuestra aplicación CodeIgniter.
Mis librerías y paquetes fundamentales para trabajar con CodeIgniter
Cómo podrás darte cuenta al empezar a leer esta entrada, esta entrada busca ser una especie de recopilatorio de librerías de las que ya se ha dedicado una entrada para hablar de cada una de ellas de manera general para conocer su implementación y uso.
Las funcionalidades en cuestión consisten en extender funciones que CodeIgniter no implementa de manera nativa, funcionalidades como un módulo de login con la Lista de Control de Acceso o ACL por sus siglas en inglés, crear tablas administrativas (tablas en HTML que cuenten con campos de búsqueda, paginación, ordenación y extensibles para más funcionalidades) y sistemas CRUD de nuestros datos y por supuesto una REST API para conectar la aplicación realizada en CodeIgniter con otros tipos de aplicaciones móviles, etc.
Community Auth para el login y Lista de Control de Acceso en CodeIgniter
La primera librería que tocaremos es la que nos permite agregar funcionalidades para el login, sistema de seguridad para el bloqueo de cuentas según una cantidad de login fallidos, cambio de credenciales, cierre de sesión, entre muchas otras funcionalidades de las cuales ya hemos hablado en una posterior entrada:
Community Auth para el login y Lista de Control de Acceso en CodeIgniter
Permite la autenticación (login), manejo de roles, lista de control de acceso (ACL) para el manejo de los permisos, manejo de recuperación de contraseña, límite de logins fallidos entre otras características que podrás consultar en la documentación oficial o en la entrada anterior.
GroceryCRUD para la creación de nuestro CRUD en muy pocos pasos
La siguiente librería que veremos es la de GroceryCRUD de la cual ya hemos hablado en una anterior oportunidad en:
Creando nuestro CRUD con GroceryCRUD y CodeIgniter
En esencia, nos permite crear la gran mayoría de las secciones administrables simples y un poco más complejas en un sistema, para ello podemos definir a cuáles tablas en nuestra base de datos queremos que sean administrables/CRUD, podemos definir rápidamente funciones propias o existentes para validaciones, columnas personalizadas, exportar datos, vistas de impresión, vistas de creación y edición entre muchas otras funciones; y las que no podamos agregar desde la propia librería, la podemos extender nosotros agregando funciones o cualquier otro comportamiento que queramos que tenga nuestras tablas mediantes JavaScript o jQuery.
Crear una API REST
La última de las librería que hablaremos y que ya tratamos en una anterior oportunidad y su funcionamiento es bastante simple:
¿Cómo crear una API REST con CodeIgniter?
Permite crear una API REST para conectar otras aplicaciones como móviles, hoy en día en donde casi cualquier aplicación cuenta con una aplicación móvil que se alimenta y envía datos a un servidor el manejo de una API REST se hace imprescindible; como ya se habló en la entrada que se trató esta librería, permite devolver las respuestas en formatos JSON, XML y HTML.
Extra: Seleccionando nuestro template para el módulo administrador
Otro punto importante es seleccionar un template administrativo acorde para nuestro proyecto; para eso no hay que darle muchas vueltas al asunto y seleccionar alguno existente que se acoja a nuestras necesidades; en Google podrás encontrar una gran cantidad al colocar como término de búsqueda algo como "bootstrap layout admin layout admin" en caso de que selecciones bootstrap como librería HTML, CSS y JavaScript para nuestro proyecto, lo que ya es bastante común hoy en día:
- 20 Free Bootstrap 3 Admin Dashboard Templates For Your Web App 2017
- 100+ Best Free Bootstrap Admin Templates
- 20 Free & Premium Bootstrap Admin Dashboard Templates
Extra: Creando nuestra librería en CodeIgniter
Ahora vamos a hablar sobre cómo crear una librería; como indicamos anteriormente, una librería está compuesto de una clase; siguiendo la documentación oficial en el siguiente enlace Creating Libraries; podemos crear una clase librería que debe estar ubicada en application/libraries
de la siguiente forma:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Someclass {
public function somemethod()
{
}
}
Aquí creamos los métodos que necesitemos, y luego desde nuestro controlador, modelo o lo que sea y hacer lo siguiente:
$this->load->library('someclass'); $this->someclass->some_method();
Si hay que pasar parámetros:
$params = array('text1' => 'Hola', 'text2' => 'Mundo');
$this->load->library('someclass', $params);
Con CodeIgniter y las librerías podemos hacer tres cosas distintas:
- Podemos crear nuevas librerías.
- Podemos extender librerías nativas o de nosotros con la palabra reservada
extends
que viene desde la herencia en PHP. - Podemos sobrescribir librerías indicando simplemente el nombre exacto de la librería a sobrescribir en nuestra nueva librería.
Conclusiones
Y esto viene siendo todo lo que tenemos que saber de las librerías en CodeIgniter 3, en esta entrada hablamos un poco de todo, sobre cómo trabajar con las librerías en CodeIgniter, hasta crear las de nosotros y cuales son las más empleadas, CodeIgniter es un gran framework muy extensible que nos permite tener nuestro código organizado ideal para todo tipo de proyectos.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter