Corporación de Industrias Tecnológicas S.A. - Capacitaciones en Informática - Programación con CodeIgniter
www.CorpintecSA.com
contacto@CorpintecSA.com
Corp. In. Tec. S.A. - Redes sociales y posicionamiento
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIgniter
1. Introducción a CodeIgniter
Curso teórico / práctico introductorio
Departamento de Capacitación
CORPORACIÓN DE INDUSTRIAS TECNOLÓGICAS S.A.
www.CorpintecSA.com – contacto@CorpintecSA.com
2. ¿Qué es CodeIgniter?
CodeIgniter es un marco de trabajo para desarrollo de
aplicaciones – un kit de herramientas – para personas que
crean aplicaciones web en PHP.
Su finalidad es permitirnos desarrollar nuestros proyectos
mucho más rápido de lo que tardaríamos escribiendo
nuestro propio código y funcionalidades desde cero,
proveyendonos de un rico grupo de librerías para realizar
tareas comunes, así como también una simple interfaz y
estructura lógica para acceder a estas librerías.
CodeIgniter nos permite concentrarnos creativamente en
nuestro proyecto, reduciendo la cantidad de código a
escribir para una tarea determinada. CodeIgniter es un
proyecto de código abierto, por lo tanto disponible para
cualquiera de nosotros gratis.
3. ¿Cuándo se aplica CodeIgniter?
Cuando necesitamos un marco de trabajo (framework)
liviano.
Cuando necesitamos una óptima performance en medianos
y grandes proyectos.
Cuando necesitamos amplia compatibilidad con cuentas de
hosting estándar que corren una variedad distinta de
versiones de PHP y configuraciones.
Cuando necesitamos un framework que necesita casi cero
configuración.
Cuando necesitamos un framework con una curva de
aprendizaje mínima.
Cuando necesitamos una documentación clara.
4. Requisitos del servidor
PHP version 4.3.2 o superior.
La mayoría de las aplicaciones web necesita acceso a
una base de datos, CodeIgniter actualmente soporta
MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle,
SQLite, and ODBC.
5. Instalación
CodeIgniter se instala en 5 sencillos pasos:
1. Descargar el paquete con una versión reciente de CodeIgniter.
2. Descomprimir el paquete.
3. Subir los archivos de la carpeta CodeIgniter al servidor. En una
instalación normal, el archivo index.php reside en la raíz del
servidor web.
4. Abrir el archivo application/config/config.php con un editor de
texto y configurar nuestra URL base. Si pretendemos utilizar
encriptación y sesiones, debemos proveer una clave de
encriptación.
5. Si deseamos utilizar una base de datos, editaremos el archivo
application/config/database.php y llenaremos los datos
necesarios para realizar la conexión a la DB.
Eso es todo!
6. Bondades de CodeIgniter
CodeIgniter es gratuito
CodeIgniter soporta PHP 4
CodeIgniter es liviano
CodeIgniter es rápido
CodeIgniter utiliza el patrón de diseño M-V-C
CodeIgniter genera URL’s limpias
CodeIgniter es extensible
CodeIgniter posee una basta comunidad online
CodeIgniter está excelentemente documentado
7. Características de CodeIgniter
Basado en el patrón de diseño Modelo-Vista-Controlador.
Soporta Active Record Database
Validación de datos y formularios.
Seguridad y filtrado XSS
Manejo de sesiones.
Clase de envío de Email, con soporte de adjuntos, texto y
html y múltiples protocolos de envío (sendmail, SMTP, and
Mail).
Librería de manupulación de imágenes (cortar, cambiar
tamaño, rotar, etc.). Soporte de librerías GD, ImageMagick,
y NetPBM
8. Más características de CodeIgniter
Clase para subida de archivos
Clase para conexión FTP
Localización
Paginación
Encriptación de datos
Caché
Log de errores
Clase de calendario
Clase de agente de usuario
Clase de codificación ZIP
9. Y más características de CodeIgniter…
Librerías XML-RPC
Librerías para Unit Testing
URL amigables para motores de búsqueda.
Enrutamiento flexible de URI’s
Soporte de Hooks, Extensiones de clases, y Plugins
Una larga librería de funciones “helpers”
11. Flujo de la aplicación
El archivo index.php sirve como frente de la aplicación, inicializando los
recursos básicos necesarios para correr CodeIgniter.
El router examina las peticiones HTTP para determinar qué debe hacer
con ella.
Si existe una archivo de caché, es enviado directamente al nevagador,
haciendo un bypass en el camino normal de ejecución.
Security. Antes que el controlador de la aplicación sea cargado, la
petición HTTP e información enviada por el usuario es filtrada por
seguridad.
El controlador carga el modelo, librerías de núcleo, plugins, helpers y
cualquier otro recurso necesario para procesar la petición.
Luego la vista final es enviada al navegador para ser mostrada al
usuario. Si el caché está habilitado, la vista es almacenada en la
memoria caché para las peticiones subsiguientes.
12. Patrón de diseño MVC
CodeIgniter está basado en el patrón de diseño Modelo-Vista-
Controlador (MVC). El patrón MVC es un acercamiento de
software que separa la lógica de la aplicación de la presentación
de los datos. En la práctica, permite que nuestras páginas
contengan un mínimo de código, ya que la presentación está
separada de la lógica.
El Modelo representa nuestras estructuras de datos. Normalmente,
nuestros modelos contandrán funciones que nos ayudarán a traer, insertar
y actualizar información en nuestra base de datos.
La Vista contiene la información que es presentada al usuario. La vista
normalmente será una página web, pero en CodeIgniter, una vista también
puede representar un fragmento de una página, como un encabezado o
pie de página. También puede ser un archivo XML, RSS o cualquier otra
clase de “página”.
El Controlador actúa como intermediario entre el Modelo y la Vista, y
cualquier otro recurso necesario para procesar la petición HTTP y generar
una página.
13. Comenzando con CodeIgniter
En las siguientes diapositivas vamos a ir conociendo la
manera en que funciona CodeIgniter, los controladores,
modelos, vistas y demás características.
¿Preguntas hasta el momento?
14. Las URL’s en CodeIgniter
Por defecto, las URL’s en CodeIgniter están diseñadas
para ser amigables con los motores de búsqueda y
personas.
CodeIgniter utiliza segmentos en las URL que
identifican controladores y métodos:
ejemplo.com/noticias/articulos/mi_articulo
Cada uno de los segmentos señalados en colores representan
algo distinto para la aplicación.
15. Segmentos
ejemplo.com/controlador/funcion/ID
1. El segmento controlador representa el controlador que debería ser
invocado.
2. El segmento funcion representa la función a llamar dentro del controlador
previamente invocado.
3. El último segmento, ID, y los subsiguientes segmentos representan
parámetros, o argumentos, de la función en cuestión.
16. Controladores
Los controladores son el corazón de nuestra aplicación,
ya que ellos determinan como deberían ser manejadas
las peticiones HTTP.
¿Qué es un controlador?
Un controlador es simplemente una clase que está nombrada
de una forma en la que puede ser asociada con una URL.
Consideremos esta URL:
• ejemplo.com/blog/
• En este ejemplo CodeIgniter buscará un controlador llamado blog.php e
intentará ejecutarlo.
17. Hola Mundo!
Crearemos un controlador simple para ver un poco de
acción.
En la carpeta application/controllers/ creamos un
archivo llamado blog.php
Dentro del archivo colocaremos el siguiente código:
<?php
class Blog extends Controller {
function index()
{
echo “Hola Mundo!”;
}
}
?>
18. Funciones dentro de Controladores
En el código del ejemplo anterior creamos una función
llamada index().
La función index() siempre es llamada por defecto
cuando el segundo segmento de la URL está vacío.
Ahora crearemos otra función dentro del mismo
controlador, llamada prueba()
function prueba()
{
echo “Probando 1234!!”;
}
19. Enviando parámetros a nuestras funciones
Si nuestra URL contiene más de 2 segmentos, éstos
serán enviados a la función invocada como parámetros
de la misma.
Consideremos esta URL:
ejemplo.com/productos/calzados/zapatillas/24
A nuestra función calzados le enviaremos el contenido de los
segmentos 3 y 4 en nuestra URL, por lo tanto:
<?php
class Productos extends Controller {
function calzados($tipo, $id)
{
echo $tipo;
echo $id;
}
}
?>
20. Controlador por defecto
En el caso de que la URL solicitada no contenga ningún
segmento, se debe especificar un controlador por
defecto para ser cargado.
Para especificar un controlador por defecto abrimos el
archivo application/config/routes.php y modificamos la
línea $route['default_controller'] = 'Blog';
donde Blog será nuestro controlador por defecto.
21. Vistas
Una vista es simplemente una página web, o un
fragmento de una, como un encabezado, pie de página
o barra lateral. De hecho las vistas pueden ser anidadas
una dentro de otra, si necesitamos ese tipo de
jerarquía.
Las vistas nunca son llamadas directamente, deben ser
cargadas por un controlador. En el patrón MVC los
controladores son los responsables de la aplicación, por
lo tanto ellos son los encargados de llamar a las vistas.
22. Creando una vista
Dentro de la carpeta application/views creamos un
archivo llamado vista_blog.php, dentro del mismo
colocaremos el siguiente código:
<html>
<head>
<title>Mi Blog</title>
</head>
<body>
<h1>Bienvenido a mi blog</h1>
</body>
</html>
23. Cargando una vista
Para carga una vista particular utilice la siguiente
función dentro de un controlador:
$this->load->view(‘nombre_vista’);
Por lo tanto, con el anterior ejemplo del blog, para cargar la
vista recién creada deberíamos tener el siguiente código en
nuestro controlador:
<?php
class Blog extends Controller {
function index()
{
$this->load->view(‘vista_blog’);
}
}
?>
24. Enviando datos a las vistas
Los datos son enviados a las vistas en forma de arreglos
u objetos, en el segundo parámetro de la función de
carga de vistas:
$data = array(
”titulo” => “Mi Blog”,
”encabezado” => “Bienvenidos”,
”mensaje” => “Este es mi blog”
);
$data['lista_tareas'] = array('Compar azucar', 'Estudiar PHP');
$this->load->view(“vista_blog”, $data);
25. Enviando datos a las vistas
Por lo tanto, nuestra vista vista_blog.php podría quedar
así:
<html>
<head>
<title><?php echo $titulo;?></title>
</head>
<body>
<h1><?php echo $encabezado;?></h1>
<h3><?php echo $mensaje;?></h3>
<ul>
<?php foreach($lista_tareas as $tarea):?>
<li><?php echo $tarea;?></li>
<?php endforeach;?>
</ul>
</body>
</html>
26. Modelos
¿Qué es un modelo?
Los modelos son clases en PHP que están diseñadas para
trabajar con nuestra información almacenada en la base de
datos. Por ejemplo, si utilizáramos CodeIgniter para crear un
Blog, nuestro modelo contendría las funciones necesarias para
insertar, actualizar, eliminar y buscar información relacionada
al blog dentro de nuestra base de datos.
27. Modelos
Los modelos se almacenan dentro de la carpeta
application/models/
Siguiendo con el ejemplo del Blog, nuestro modelo
podría ser el siguiente:
28. Modelos
class ModeloBlog extends Model {
function ModeloBlog()
{
parent::Model();
}
function insertar()
{
$data = array( “titulo” => $_POST[‘titulo’], “texto” => $_POST[‘texto’]);
$this->db->insert('notas', $data);
}
function traerNotas()
{
$consulta = $this->db->get('notas');
return $consulta->result();
}
}
29. Cargando un Modelo
Los modelos son siempre cargados desde las funciones
dentro de un controlador
Para cargar un modelo usamos la siguiente función:
$this->load->model('nombre_modelo');
Una vez cargado el modelo, tendremos acceso a las funciones
contenidas dentro de el, de la siguiente forma:
$this->nombre_modelo->funcion();
Observemos el siguiente ejemplo de un controlador que carga
un modelo, utiliza una función del mismo y luego envía el
resultado a la vista:
30. Cargando un Modelo
class Blog extends Controller {
function blog()
{
$this->load->model('ModeloBlog');
$data['notas'] = $this->ModeloBlog->traerNotas();
$this->load->view('vista_blog', $data);
}
}
31. Cargando Modelos automáticamente
En algunas aplicaciones puede suceder que
necesitemos un modelo a lo largo de toda la aplicación,
que esté disponible para todos los controladores, sin
necesidad de invocarlo cada vez que se lo necesite.
Para ello podemos incluir el nombre de nuestro modelo
en el archivo autoload.php dentro de la carpeta
application/config/
En este archivo podemos definir qué recursos deberían
ser cargados automáticamente, tales como librerías,
helpers, modelos, etc.
32. Helpers
Los Helpers, como el nombre en inglés lo sugiere, no ayudan a
realizar tareas. Cada archivo helper es simplemente una colección
de funciones de una categoría en particular.
Existen helpers para la URL, que nos asisten en la tarea de crear
links, helpers de formularios, helpers para texto, helpers de
cookies, helpers para trabajar con archivos, etc.
CodeIgniter, por defecto, no carga estos helpers. Por lo tanto
tenemos que invocarlos cada vez que necesitemos usarlos, o bien
incluirlos en el archivo autoload.php
Los helpers se encuentran en la carpeta system/helpers ó bien en
system/application/helpers. CodeIgniter primero buscará en
application/helpers y sino encuentra el archivo lo buscará en
system/helpers.
33. Cargando un Helper
Para cargar un helper tenemos que llamar a la función
de carga de helpers.
$this->load->helper('name');
Hecho esto tenemos a disposición todas las funciones
que incluya el helper.
34. Utilizando librerías
CodeIgniter cuenta con varias librerías que nos
simplifican el trabajo.
Para acceder a ellas, debemos utilizar la funcion de
carga:
$this->load->library(‘nombre_lib’);
Una vez cargada, podemos acceder a los recursos
contenidos en ella de la siguiente forma:
$this->nombre_lib->funcion_a_usar();
35. Fin
A lo largo del curso se desarrollarán específicamente el
uso de las librerías incluídas por defecto en CodeIgniter,
como implementar nuevas librerías y el desarrollo de
una aplicación de prueba.
¿Preguntas?