La Ciencia de Saber Programar con CodeIgniter

Antes que nada, debemos preguntarnos ¿qué es CodeIgniter y cómo nos puede ayudar en el desarrollo en PHP?

Puede que ya sepas que es un framework en php para desarrollar otros programas, CodeIgniter, por tanto, es un programa o aplicación web desarrollada en PHP para la creación de cualquier tipo de aplicación web bajo PHP.

¿Qué es CodeIgniter?

CodeIgniter es un entorno de desarrollo abierto (licencia Open Source Apache/BSD-style) que permite crear sitios web de forma dinámica con PHP.

Uno de los principales objetivos es ayudar a que los desarrolladores puedan realizar proyectos mucho más rápido que creando toda la estructura desde cero.

Esto se debe a que dispone de un conjunto bastante amplio de librerías útiles para realizar tareas comunmente necesarias, así como una interface simple y una estructura lógica sencilla para acceder a esas librerías.

CodeIgniter te permite enfocarte en la parte creativa de tu proyecto, minimizando la cantidad de código necesaria para una tarea dada.

Entre otras características podemos destacar que es un entorno muy simple. El núcleo del sistema sólo requiere unas pocas librerías para funcionar adecuadamente. Esto supone una gran ventaja frente a otros frameworks de desarrollo que quieren muchos más recursos para realizar las mismas tareas.

Las librerías adicionales que se necesiten se cargan de forma dinámica, con lo cuál el sistema en sí es muy simple y bastante rápido (está considerado como el framework más rápido, sobretodo en desarrollo bajo PHP).

Todo Sobre CodeIgniter
Desde un punto de vista arquitectónico y técnico CodeIgniter fue creado con los siguientes objetivos:

  • Instanciación dinámica. En CodeIgniter, los componentes y rutinas son cargados únicamente cuando son invocados, haciendo posible que la aplicación sea muy liviana.
  • Poco acoplamiento. El acoplamiento es el grado que los componentes de un sistema dependan unos de otros. Cuanto menos acomplado esten los componentes, más reusable y flexible será el sistema.
  • Singularidad del componente. La singularidad es el grado que más componentes tienen un propósito en el que enfocarse más estrecho. En nuestro caso, cada clase y sus funciones son altamente autónomas para permitir máxima utilidad.

Uso del patrón MVC

CodeIgniter usa el patrón Modelo-Vista-Controlador, que permite una buena separación entre lógica y presentación.

Esto es particularmente bueno para proyectos en los que los diseñadores trabajan independientemente con sus plantillas de estilo, ya que el código en esos archivos será mínimo.

A continuación te muestro una breve descripción del patrón:

  • Modelo: representa la estructura de datos. Las clases del modelo contienen funciones para interactuar con la información almacenada en la base de datos, realizando consultas de forma sencilla.
  • Vista: es la información final que se presenta al usuario. Normalmente será una página web, pero en CodeIgniter una vista también puede ser un fragmento de página como un encabezado o pie de página.
  • Controlador: realizar la labor de intermediario entre el modelo, las vistas, y cualquier otro recurso necesario para procesar la petición HTTP y generar la página web.

Diagrama de Flujo de la Aplicación

  • El archivo index.php realiza el papel de controlador principal, inicializando los recursos básicos para el funcionamiento de CodeIgniter.
  • El Router coge la petición HTTP y la analiza para ver las acciones que se deben realizar.
  • Si la página solicitada se encuentra en caché se envía directamente al navegador sin pasar por las demás etapas de ejecución, reduciendo así el tiempo de respuesta.
  • El módulo Seguridad se encarga de filtrar todos los datos suministrados por el usuario, antes de pasarlos al controlador correspondiente.
  • El Controlador carga los modelos, plugins, librerías y cualquier otro recurso necesario para procesar la petición.
  • Por último, la Vista se encarga de presentar los datos en el navegador. Si el cacheó está habilitado la Vista se guarda para servirla en posteriores peticiones.

Características

No resulta una buena manera de juzgar una aplicación el hecho de listar unas características, la única manera de juzgar la aplicación es probarla. A te muestro una lista de características que cumple CodeIgniter:

  • Sistema basado en Modelo-Vista-Controlador.
  • Compatible con PHP4.
  • Muy liviano.
  • Clases de base de datos llenas de características con soporte para varias plataformas.
  • Formulario y Validación de datos.
  • Seguridad y filtro XSS.
  • Manejo de sesión.
  • Clase de envío de email.
  • Librería de manipulación de imágenes (cortar, copiar, redimensionar…)
  • Clase de upload de fichero.
  • Clase de FTP.
  • Encriptación de datos.
  • Scaffolding.
  • Clase de calendario.
  • Clase de codificación Zip.
  • Clase de motor de plantillas.
  • Ruteo de URI Flexible.
  • Larga librería de funciones auxiliares.

Instalación

Obtener CodeIgniter

Tenemos dos opciones para descargar CodeIgniter, el primer lugar desde su página web o desde el repositorio subversion de su proyecto:

svn checkout http://dev.ellislab.com/svn/CodeIgniter/trunk
directorio

Pasos a seguir para su instalación

CodeIgniter se instala en cuatro sencillos pasos:

  1. Descomprimimos el paquete
  2. Subimos los archivos y carpetas de codeigniter a nuestro servidor, el archivo index.php será la raíz.
  3. Abrimos el archivo application/config/config.php con un editor de texto y establecemos la URL base.
  4. Si queremos usar una base de datos, abrimos el fichero application/config/database y establecemos la configuración de la base de datos.

Primeros pasos con CodeIgniter

A continuación te explicare conceptos básicos para comenzar creando pequeñas aplicaciones, facilitando la tarea para que la curva de aprendizaje no sea demasiado grande.

URL's en CodeIgniter

CodeIgniter usa un aproximamiento basado en segmentos. Cada segmento en la URL (en aproximación al patrón MVC) representa lo siguiente:

www.misitio.com/clase/funcion/ID

  1. El primer segmento representa el controlador (clase) que debe ser invocado.
  2. El segundo segmento representa la función, de dicho controlador, que debe ser llamada.
  3. El tercer segmento (y sucesivos) representa el ID y cualquier variable que será pasada a la función (parámetros de la función).

Primera Aplicación

La mejor forma de aprender a utilizar el framework de forma óptima es programar pequeñas aplicaciones, aumentando cada vez más el grado de dificultad.

Aquí te muestro los pasos más básicos para crear una Web con CodeIgniter.

En primer lugar, vamos a crear un controlador muy sencillo, para ver cómo funciona.

Usando el editor de texto que prefieras, crea un archivo (en la carpeta application/controllers/) llamado hola.php y escribe el siguiente código:

Nota que los nombres de las clases deben comenzar siempre por una letra mayúscula. También debemos asegurarnos de que nuestra clase herede de la clase padre Controller, así podremos hacer uso de todas sus funciones. Seguidamente para comprobar su funcionamiento, tan sólo tendremos que visitar nuestro sitio usando una URL similar a la siguiente:

www.misitio.com/index.php/hola/

Si todo va correctamente, deberías ver Hola Mundo!.

En el ejemplo anterior he creado una función llamada index(). Dicha función se cargará por defecto si el segundo segmento de la URL se encuentra vacío. Es decir, otra forma de mostrar el mensaje anterior podría ser:

www.misitio.com/index.php/hola/index/

Debemos recordar que el segundo segmento de la URL corresponde a la función dentro del controlador que será llamada. Así pues, vamos a crear una nueva función:

Para llamar a esta nueva función, seguiremos los mismos pasos de antes, esta vez sería así:

www.misitio.com/index.php/hola/mifuncion/

Si la URL posee más de dos parámetros, serán pasados como parámetros a la función correspondiente. Por ejemplo:

Si tenemos una URL como la siguiente:

www.misitio.com/index.php/hola/misdatos/alejandro/30

Los segmentos 3 (alejandro) y 4 (30) serán pasados como parámetros a la función misdatos.

Ahora realizaremos un pequeño ejemplo utilizando vistas. Para ello crearemos el fichero holaview.php (lo guardamos en la carpeta application/views/), con el siguiente contenido:

Hola Mundo!

Ya hemos creado la vista. Para cargarla usaremos una función parecida a la siguiente:

$this->load->view('nombre_vista');

Ahora, usaremos el mismo controlador que creamos al principio y llamaremos desde él a la función para cargar la vista:


}
}
?>

Ahora debería ver su nueva vista si visita su sitio utilizando la URL:
www.misitio.com/index.php/hola/
(Si no se pone el segundo segmento se llama por defecto a la función index()

Recursos externos

Conclusion

Lo que más destaca CodeIgniter es su gran accesibilidad, ya que podemos utilizarlo en diferentes entornos. Esta es la razón por la que te muestro acerca de este framework PHP para que comiences a utilizarlo y puedas desarrollar tus propias aplicaciones web.

En el siguiente artículo te enseño cómo crear un aplicación de libro de visitas muy simple con CodeIgniter.