Los helpers en CodeIgniter para definir nuestras funciones

13-01-2019 - Andrés Cruz

In english
Los helpers en CodeIgniter para definir nuestras funciones

Los helpers en CodeIgniter son unos archivos que guardan un conjunto de funciones definidas de manera global en toda nuestra aplicación basadas en una mismas clasificación o en un mismo tipo.

Los helpers son una de las dos formas que existen para extender funcionalidades específicas en la plataforma; la otra son las librerías; otra definición que pueden tener es una biblioteca de funciones que resuelven elementos típicos y en una categoría en particular.

En resumen, los helpers son una manera sencilla que tenemos para crear funcionalidades en CodeIgniter; son un juego de funciones relacionadas que están almacenadas en un único archivo.

Los Helper en CodeIgniter

CodeIgniter cuenta con múltiples Helper que podemos ver en la documentación oficial.

CodeIgniter no carga helper por defecto, todos los helpers que queramos emplear deben ser cargados ya sea por el autoload o por la manera tradiconal.

Los helpers de sistema están almacenados en system/helpers mientras que los helpers que nosotros vayamos a definir están almacenados en system/application/helpers

Trabajando con los helpers en CodeIgniter

Los helper en CodeIgniter se encuentran almacenados en la carpeta system/helpers; que como verás, tienen distintos propósitos, para trabajar con las URLs, textos, fechas, captchas, etc.

Cargar helper en CodeIgniter

Para cargar un helper como en CodeIgniter podemos hacerlo de manera individual de la siguiente forma:

$this->load->helper('helper');

O podemos cargar varios de ellos de la siguiente forma:

$this->load->helper(array('helper1', 'helper2', 'helper3'));

También podemos realizar la carga de manera automatizada para que esté disponible en todo el ámbito de nuestra aplicación de la siguiente forma:

application/config/autoload.php

Por ejemplo:

$autoload['helper'] = array('html', 'url', 'form', 'utils_helper');

En general, podemos realizar las cargas de manera muy similar a lo que nos permite CodeIgniter en el resto de los elementos, como las librerías o los modelos.

Crear nuestros propios helpers

Este es uno de los componentes en CodeIgniter que podemos crear nosotros; es decir, podemos tener nuestros helpers personalizados; por ejemplo, vamos a crear un helper llamado utils_helper en el siguiente directorio:

application\helpers\

Es decir:

application\helpers\utils_helper.php

Y vamos a definir la siguiente función:

if (!function_exists('format_dates')) {
    function format_dates($date) {
        $CI = & get_instance();
        $date = new DateTime($date);
        return $date->format('d/m h:m');
    }
}

También podemos definirla de la siguiente forma:

    function format_dates($date) {
        $CI = & get_instance();
        $date = new DateTime($date);
        return $date->format('d/m h:m');
}

En general, esta función lo que hace es es dado una fecha, devuelve la fecha en otro formado. También podemos definir las funciones que necesitemos, aunque recuerda, que deben de ser funciones de la misma clase; por ejemplo:

    function format_dates($date) {
        $CI = & get_instance();
        $date = new DateTime($date);
        return $date->format('d/m h:m');
}
    function format_dates_other_contry($date) {
    // hacer algo
}

Y así de simple, definimos dos funciones para un mismo helper; para emplear alguna de las funciones anteriores, primero debemos de cargar el helper

$this->load->helper('name');

Y luego simplemente invocamos al método en donde queramos:

format_dates($date);

Extender helpers en CodeIgniter

También podemos agregar nuevas funciones o características sobre los helpers que ya existen o sobre los nuestros; aunque lo común es extender funciones sobre los ya existentes; es decir, sobre los helpers que se encuentran almacenados en system/helpers; para ello debemos de crear nuestros helpers en la carpeta system/application/helpers y y nombrarlo como el helper original pero con el prefijo "MY_"; así de simple.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.