Trabajar con MY_Controller de CodeIgniter

Extracto

Reemplazar las librerías nativas de CI con nuestras propias versiones. Asignando un nombre a los archivos de clase idéntico a una librería nativa causaremos que CI los utilice en lugar de las clases nativas. Esta característica se invoca de la forma más elemental: llamar a la librería igual que su nombre nativo de CI. Por ejemplo para reemplazar con nuestro propio código a la librería nativa de Email tan solo tenemos que crear el archivo application/libraries/Email.php y declarar su clase como:

class CI_Email{
// aquí tu código ///
}

@pedroruizhidalg―Hay que tener en cuenta que la mayoría de las clases empiezan con el prefijo CI, aunque no todas. Has de tener cuidado con esto. No obstante si lo que necesitamos es añadir una (o varias) funcionalidades extra a nuestras clases nativas, es más recomendable usar la extensión de las librerías nativas que andar reconstruyendo todo desde cero: reinventando la rueda.

Abreviaturas usadas

CI=CodeIgniter.

Descripción

Un ejemplo Práctico: De forma general, hay que hacer una comprobación del login y los permisos de usuario antes de ejecutar cualquier controlador. La arquitectura para esto es tan simple como potente. Lo primero que tenemos que hacer es comprobar cuál es el prefijo que tenemos declarado en application/config/config.php para el elemento subclass_prefix del array config

$config['subclass_prefix'] = 'MY_';

Generalmente, y de forma predeterminada es MY, aunque tú puedes colocar aquí cualquier nombre de prefijo de tu preferencia. Asumamos que está declarado como ‘MY’ para el ejemplo que expongo aqui.

Ejecución

Creamos un archivo llamado MY_Controller en la carpeta application/core así:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MY_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();

        if (! $this->ion_auth->logged_in()) redirect('auth/login','refresh');

        $this->lang->load('tuarchivodelenguaje');

        $this->output->enable_profiler(TRUE); // borrar esta linea para entregar el programa

        $this->load->library('migration');

        if(!$this->migration->latest()) 
        {
              show_error($this->migration->error_string());
              exit;
        }
    }    
    
    function funcionparatodosloscontroladores()
    {
       /// aquí tu código
    }
}

Epílogo

Analicemos, pues, el código anterior de MY_Controller. Primeramente heredamos mediante parent::__construct() toda las funcionalidades de la clase Controller a este nuevo tipo de controlador. Hecho esto, comprobamos los permisos de usuario de la librería ion_auth (tú puedes usar la tuya propia u otra que te parezca mejor). Luego cargamos el archivo de lenguaje con el que estemos trabajando, obviamente en caso de necesitarlo. Activamos el profiler a true mientras estemos en fase de desarrollo, luego simplemente borramos esta única linea a la hora de entregar el producto.
En mi caso  realizo cada vez la comprobación de la versión de las migraciones aquí.

Todos los controladores, excepto los que me ayudan a hacer login, claro está, los declaro de la clase MY_Controller en vez de CI_Controller, es decir toda la estructura de controladores hereda de esta clase. De igual manera la funcion “funcionparatodosloscontroladores()” estará presente y dispuesta para todos los controladores de esta nueva clase que hemos creado. Todos los controladores heredan de este. En mi caso, aquí redefino funciones para hacer el render de las páginas a mi gusto, pues la forma nativa de CI no se adecua a mis necesidades.

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

Clave pública @pedroruizhidalg.pub.key

exlibri, sapere aude

exlibri del autor

#aboutpedroruizhidalgo

♻ miotroblogsite ahorra papel
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: