Introducción a Codeigniter

Introducción

Llamadme vago… o práctico. Cuando uno ve proyectos y proyectos en Internet se da cuenta de que todos tienen un patrón en común… entonces ¿por qué empezar a programar desde cero nuestra aplicación o sitio web? Aprovechémonos de los frameworks existentes. En esta entrada hago una introducción a Codeigniter, framework que voy a usar para crear una aplicación para Twitter que tengo en mente.

Puede que a algunos eso de framework les suene a chino, pero si lo llamamos marco de trabajo ya se puede ver por donde van los tiros, es una mesa de trabajo con una serie de herramientas que nos facilitan la vida. Si queremos construir una mesa, no nos vamos al monte a talar un árbol, a sanearlo, a cortarlo, a medir, a encolar, a pintar, etc, a no ser que dispongamos de mucho tiempo. Es mejor que nos den las piezas de la mesa ya hechas y nosotros tengamos simplemente que montarla, a lo IKEA 😉

Pues eso es un framework: Un conjunto de herramientas, librerías y clases que nos facilitan la vida a la hora de crear un nuevo proyecto. Se encaminan a reducir el tiempo de programación y por lo tanto a aumentar la productividad.

[pullquote align=»right»]El uso de un framework aumenta la productividad.[/pullquote]

¿Por qué he elegido Codeigniter? Sencillo, es el que estudié en su día en el curso de experto en programación web organizando por la Universidad de Alicante y si bien no lo he utilizado a fondo si que dispongo de bastante documentación al respecto lo que para mí la curva de aprendizaje no será demasiado elevada si ya de por sí la del framework no lo es.

Ventajas e Inconvenientes de un Framework

Como todas las herramientas que tenemos a nuestra disposición, un framework nos ofrece una serie de ventajas e inconvenientes, aunque a mi modo de ver, las ventajas ganan por goleada a los inconvenientes.

Las ventajas de usar un framework como Codeigniter pueden ser las siguientes:

  • Evitar trabajo repetitivo.
  • Aprovechar el trabajo realizado ya en otros proyectos por lo que las herramientas que usamos ya están probadas durante mucho tiempo.
  • Estructurar el proyecto de manera óptima.
  • Terminología común para el equipo de programadores.
  • Minimizar la aparición de errores.

Pero… ¡hey! que también tienen inconvenientes:

  • Nos puede costar aprenderlo.
  • Puede chocar con nuestra costumbre a la hora de programar.
  • No se ajusta a las necesidades.
  • Usarlo cuando no es necesario.

Por todo ello, antes de ponernos a usar un framework tenemos que tener muy claro que vamos a hacer, no vayamos a usar uno simplemente para crear un formulario de contacto en una landing page de, por ejemplo, un concurso en Facebook.

Hablemos de Codeigniter

Codeigniter nos ofrece una serie de características muy buenas para desarrollar nuestra aplicación web:

  • Ofrece una curva de aprendizaje bajo.
  • Facilidad en la configuración. Se hace a través de diferentes ficheros de configuración.
  • Entornos. Permite tener varios entornos, de desarrollo, pruebas, producción…
  • Integración con otros frameworks.
  • Comunidad muy activa y documentación extensa.
  • Usa el patrón de Modelo-Vista-Controlador o MVC.
  • URLs amigables, muy recomendadas para el SEO.
  • Validación de formularios que nos ahorrará mucho trabajo repetitivo.
  • Gestión de sesiones.
  • Seguridad y filtros XSS.
  • Benchmarking.
  • Pruebas unitarias.
  • Caché.

Aunque no nos ofrece otras características de frameworks más avanzados como Symfony2. Codeigniter no nos ofrece:

  • No tiene línea de comandos para generar código automático.
  • No tiene scaffolding (la creación de básica para la administración CRUD).
  • No hay código para la relación entre las tablas.

Una pequeña muestra de ejemplo

Configurando el entorno

Para esta pequeña muestra utilizaré las siguientes herramientas:

Cuando descargamos Codeigniter y lo descomprimimos nos encontramos con la siguiente estructura de carpetas y ficheros.

codeigniter

La instalación de WAMPServer es muy sencilla y nos dejará, si hemos instalado todo por defecto, el servidor en c:/wamp. Si navegamos por la estructura de directorios podemos ver que dentro de c:/wamp tenemos www, aquí dentro es donde pondremos los ficheros para poder accederlos a través del navegador. Evidentemente a través de la configuración de Apache podemos cambiar esta ruta, pero no vamos a entrar ahora a ello.

Si la carpeta con todo el contenido de Codeignter la renombramos, en mi caso a myapp y la movemos a c:/wamp/www y accedemos a través del navegador a http://localhost/myapp esto es lo que nos aparecerá.

codeigniter-init

¿Qué ha pasado? El controlador frontal index.php ha cargado el controlador por defecto de Codeigniter que es welcome.php y la vista asociada. El controlador por defecto se puede cambiar en application/config/routes.php.

Además nos invita a visitar la Guía de Usuario que es MUY completa y recomiendo su lectura, al menos de los ejemplos básicos.

Para el ejemplo voy a crear una base de datos a través de phpMyAdmin con una sola tabla que será la que consulte. En este caso, algo muy simple, imaginémonos que estamos construyendo un CRM, y en una sección queremos ver los usuarios que han rellenado un formulario de nuestro blog para obtener, qué se yo… un libro Copyleft.

Una vez creada la base de datos y la tabla, nos quedaría de la siguiente forma habiendo insertado dos filas. La base de datos la he llamado myapplication y la tabla tbl_leads.

codeigniter-bdtable

En el fichero config.php hay un sinfín de opciones para configurar, todas ellas vienen con un comentario previo explicando claramente para qué sirven.

Vamos a configurar la URL base de nuestro proyecto.

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|	http://example.com/
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url']	= 'http://localhost/myapp';

En el fichero database.php configuramos el acceso a la base de datos, tened en cuenta que la he configurado para que el usuario sea el root sin contraseña SOLO PARA EL EJEMPLO, es MUY IMPORTANTE que creemos un usuario con contraseña y asignándole una serie de permisos.

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'myapplication';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Creando un modelo, una vista y un controlador

Una de las ventajas a destacar de Codeigniter es que es muy flexible y realmente el único elemento que nos hace falta es el controlador pero dado que nos ofrece un patrón MVC lo suyo es aprovecharlo y usarlo de forma que quede más estructurado el código.

Nuestro objetivo aquí es crear un Controlador que llame a un Modelo que conecta con la Base de Datos y nos devuelve los leads existentes para mostrarlos en una Vista.

Para ello creamos los siguientes documentos:

  • application/models/leads_model.php
  • application/controllers/leads.php
  • application/views/leads/list.php

Veamos el primero de ellos.

// La clase se llama como el fichero pero con la primera letra en mayuscula.
// Tiene que heredar de CI_Model
class Leads_model extends CI_Model {

	// Constructor
	public function __construct() {
		parent::__construct();
	}

	// Funcion que obtiene todos los leads de la base de datos
	public function getLeads() {

		$query = "SELECT * FROM tbl_leads";
		$result = $this->db->query($query);

		$leads = array();

		foreach ($result as $lead) {
			$leads[] = $lead;
		}

		$result->free_result();

		return $leads;
	}
}

Consultamos a la base de datos para obtener todos los leads y los devolvemos en un array.

Vamos a ver que hacemos desde el controlador leads.php.

class Leads extends CI_Controller {
	public function listing() {

		// Cargamos el modelo
		$this->load->model('Leads_model');

		// Array asociativo que pasaremos a la vista
		// Cargamos todos los leads
		$view_vars = array();
		$view_vars['leads'] = $this->Leads_model->getLeads();

		// Pasamos las variables a la vista
		$this->load->view('leads/list', $view_vars);
	}
}

A las vistas nunca se les llama directamente, es el controlador el que se encarga de obtener los datos y presentar la vista, en nuestro caso la vista simplemente ofrecerá los datos al usuario.

Veamos el contenido de leads/list.php.

foreach ($leads as $lead) {
	echo utf8_decode($lead['name'] . " " . $lead['lastname'] . " from " . $lead['city'] . " and mail: " . $lead['email']);
	echo "<br/>";
}

Atención a que la variable que contiene todos los Leads es el nombre de la celda del array asociativo que pasábamos desde el controlador.

¿Cómo vemos los resultados? Sencillo, a través de la URL. Las URL amigables de Codeigniter siguen la siguiente norma.

codeigniter-url

Esto es todo hasta aquí.

Hemos visto como configurar un entorno para Codeigniter y un ejemplo muy sencillo de Modelo-Vista-Controlador. Escribiré otra entrada para poner más información algo más avanzada.

¿Os ha parecido útil? Os dejo los comentarios abiertos para cualquier cosa que necesitéis y recordad que de lo que se trata es de aprender juntos, ni mucho menos soy un experto 😉

(Visited 716 times, 1 visits today)

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ir arriba

Si continuas utilizando este sitio, aceptas el uso de las cookies. Más información

Las opciones de cookie en este sitio web están configuradas para "permitir cookies" para ofrecerte una mejor experiéncia de navegación. Si sigues utilizando este sitio web sin cambiar tus opciones o haces clic en "Aceptar" estarás consintiendo las cookies de este sitio.

Cerrar