SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Code Igniter
Ene al Cubo - Febrero 2012
claudio@enealcubo.com
Saturday, July 27, 13
Temario
• El concepto MVC
• Requerimientos
• Instalando Code Igniter
• Estructura de directorios
• Flujo de Información
• Coding standard
• Configuración inicial
• Utilizando URL’s y rutas
• Controladores
• Vistas
• Modelos
• Helpers
• Bibliotecas
• Carga automática de recursos
• Bibliotecas propias
• Caché
• Manejo de errores
• Seguridad
Saturday, July 27, 13
El concepto MVC
• Modelo /Vista / Controlador
• Concepto introducido por los diseñadores
del lenguaje Smaltalk.
• Utilizado generalmente para aplicaciones
GUI.
• El concepto principal trata de
encapsular o partir una aplicación
en tres.
Saturday, July 27, 13
El concepto MVC
• Modelo
• Es un objeto que representa datos o actividad.
• Como por ejemplo una tabla de una base de
datos, un archivo o algún otro medio que
arroje datos almacenados.
• Si llegas a necesitar un modelo con datos no
relacionados será necesario dividir este
modelo en dos y crear uno diferente.
Saturday, July 27, 13
El concepto MVC
• Vista
• Es una forma visual de reflejar el estado del
modelo.
• Esta parte es respondable de mapear la
visualización a un dispositivo.
• Puede haber mas de una vista relacionada al
modelo ya que los estados de este último
puede variar.
Saturday, July 27, 13
El concepto MVC
• Controlador
• Ofrece la facilidad de cambiar el estado de un
modelo.
• Es el enlace entre modelo y vista.
• Acepta datos del usuario e instruye al modelo
y a la vista para accionar mecanismos.
• Es responsable de ampear las acciones del
usuario a la aplicación.
Saturday, July 27, 13
El concepto MVC
Modelo
Controlador Vista
Saturday, July 27, 13
El concepto MVC
• El modelo apunta a la vista con lo cual este envia
pequeños mensajes de cambio de su estado.
• El modelo nunca debe de saber que tipo de vista se
utiliza.
• Por otro lado la vista debe de saber que tipo de modelo
está observando.
• Así mismo la vista podrá mandar llamar cualquiera de las
funciones del modelo por medio del controlador.
• El controlador apunta a las otras dos partes en forma
sólida ya que necesita saber el tipo de ambos.
Saturday, July 27, 13
El concepto MVC
• Otros conceptos o modelos parecidos al MVC
podemos mencionar al ORM (Object-relational
Mapping)
• Así mismo podemos mencionar frameworks de
desarrollo web que soportan MVC.
• Code Ingniter
• Cake PHP
• Zend Framework
Saturday, July 27, 13
Code Igniter
• Es un framework muy simplificado para
desarrolladores PHP para crear poderosas
aplicaciones web.
Saturday, July 27, 13
Code Igniter (CI)
• Características
• Alto rendimiento.
• Poca configuración inicial.
• No requiere uso de línea de comandos.
• No tiene reglas restrictivas de codificación.
• No requiere librerías externas como PEAR. Aunque se pueden utilizar.
• No requiere que aprendas lenguaje de templates para generar las
vistas. (SMARTY por ejemplo). Aunque lo soporta.
• Documentación simple y clara.
• URL’s limpios
Saturday, July 27, 13
Requerimientos de CI
• PHP 4.3.2 en adelante. Con cualquier web server.
• Base de datos para almacenar información.
• MySQL (4.1)
• MS SQL
• Oracle
• Sqlite
• ODBC
Saturday, July 27, 13
Licencia de CI
• Licencia Copyright a nombre de EllisLab Inc.
• Se permite el uso de este producto siempre y
cuando:
• Se distribuya una copia de esta licencia.A
grandes rasgos. =)
Saturday, July 27, 13
Instalación de CI
• Descargar el archivo de la versión estable del
framework del sitio www.codeigniter.com.
• La versión actual es la 2.1.0 ya no soporta
PHP 4.x
• La versión que soporta PHP 4.x y 5.x es la
1.7.3
Saturday, July 27, 13
Instalación de CI
• Proceso de instalación.
1. Desempacar el archivo en un directorio
que no esté publicado en web.
2. Crear una carpeta en el directorio de su
web server (htdocs, www, inetpub, etc).
3. Copiar los archivos del CI en esta carpeta.
Saturday, July 27, 13
Ejercicio #1
1. Instalar CI en su ambiente de desarrollo
*AMP
2. Probar la funcionalidad accesando por medio
de un browser.
Saturday, July 27, 13
Estructura
• system/
• core/
• database/
• fonts/
• helpers
• language/
• libraries/
Saturday, July 27, 13
Estructura
• application/
• cache
• config/
• controllers/
• core/
• errors/
• helpers/
• hooks/
• language/
• libraries/
• logs/
• models/
• third_party/
• views/
Saturday, July 27, 13
Estructura
• Es posible tener una sola instalación para
diferentes aplicaciones.
application/foo/
application/foo/config/
application/foo/controllers/
application/foo/errors/
application/foo/libraries/
application/foo/models/
application/foo/views/
application/bar/
application/bar/config/
application/bar/controllers/
application/bar/errors/
application/bar/libraries/
application/bar/models/
application/bar/views/
Saturday, July 27, 13
Estructura
• Para seleccionar una aplicación en especial es
necesario editar el archivo index.php y
cambiar la variable $application_folder =
“application/foo”.
• Cada una de las aplicaciones necesitará su
propio archivo index.php. Este archivo se
podrá tener otro nombre.
Saturday, July 27, 13
Flujo de Información
• El archivo index.php inicializa la aplicación.
• El Router analiza el encabezado HTTP para determinar que se hará.
• Si existe cache esta información se envía directamente al browser.
• Luego la información es filtrada por un módulo de seguridad.
• El controlador carga los modelos, bibilotecas, plugins, helpers y cualquier otro recurso que se
necesite.
• Al finalizar esto la vista es renderizada y enviada al navegador. Si el cache está activado esta es
enviada al cache para respuestas futuras.
Saturday, July 27, 13
Coding Standar
• Formato de archivos
• Codificación UTF-8
• Terminación de línea “LF”
• IDE’s
• Notepad - Notepad++
• Textmate
• Aptana - Eclipse
• Dreamweaver
• HTML Kit
Saturday, July 27, 13
Coding Standar
• Etiquetas PHP
Incorrecto
<?php
echo “Hola”;
?>
Correcto
<?php
echo “Hola”;
/* End of file myfile.php */
/* Location ./system/modules/mymodule/myfile.php */
Saturday, July 27, 13
Coding Standar
• Nombrado de clases
Incorrecto
class superclass
class superClass
Correcto
class Super_class
Saturday, July 27, 13
Coding Standar
• Nombrado de métodos
Incorrecto
function propiedadesarchivo()
function propiedadesArchivo()
function getfileproperties()
function getFileProperties()
function get_file_properties_from_the_file()
Saturday, July 27, 13
Coding Standar
• Nombrado de métodos
Correcto
function get_file_properties()
Saturday, July 27, 13
Coding Standar
• Nombres de variables
Incorrecto
$j = ‘foo’;
$Str
$nombreVariable
$nombrevariable
$nombre_de_variable_muy_largo
Saturday, July 27, 13
Coding Standar
• Variables
Correcto
for ($j = 0; $j < 10; $j++)
$str
$buffer
$group_id
$last_city
Saturday, July 27, 13
Coding Standar
• Indentación de estructuras
Incorrecto
function myfunct(){
//
}
if ($foo == $bar){
//
}
Saturday, July 27, 13
Coding Standar
• Indentación de estructuras
Correcto
function myfunct()
{
//
}
if ($foo == $bar)
{
//
}
Saturday, July 27, 13
Configuración CI
• Existen dos tipos de configuraciones, la
simple y la avanzada.
• Configuración Inicial
• Abrir el archivo application/config/
config.php
Saturday, July 27, 13
Carga Automática de Recursos
Proyecto
Controlador
Método
$this->load dentro del
método
$this->load dentro del
constructor
config/autoload.php
Saturday, July 27, 13
URL’s limpios
• Por default CI está diseñado para que sea amigable con la
lectura de los URL’s tanto para los humanos como para los
motores de búsqueda.
example.com/index.php/class/function/ID
1. El primer argumento representa el nombre de la clase del
controlador.
2. El segundo reprsenta el nombre del método o de la
función
3. El tercero representa el argumento o argumentos a pasar
al método o función.
Saturday, July 27, 13
Controladores
• Es una clase definida en un archivo la cual es una forma de acceso al URL.
• Se guardan en el directorio controllers
• Ejemplo.
<?php
class Blog extends CI_Controller {
	

 public function index()
	

 {
	

 	

 echo 'Hello World!';
	

 }
}
?>
Saturday, July 27, 13
Controladores
• El nombre de la clase del controlador deberá
de empezar con mayúscula.
• Para definir un controlador default hay que
configurarlo en el archivo application/config/
routes.php
$route['default_controller'] = 'Blog';
Saturday, July 27, 13
Controladores
• En algunas ocasiones es necesario crear un método
constructor para cargar algunos recursos al
controlador.
  public function __construct()
       {
            parent::__construct();
            // Código fuente
       }
Saturday, July 27, 13
Palabras Reservadas
• No llamar a tu controlador como:
• Controller
• CI_Base
• _ci_initialize
• Default
• index
Saturday, July 27, 13
Palabras Reservadas
• No llamar las funciones:
• is_really_writable()
• load_class()
• get_config()
• show_error()
• show_404()
• log_message()
• _exeption_handlrer()
• get_instance()
Saturday, July 27, 13
Palabras Reservadas
• No llamar variables
• $config
• $mimes
• $lang
Saturday, July 27, 13
Palabras Reservadas
• No llamar constantes
• EXT
• FCPATH
• SELF
• BASEPATH
• APPPATH
• CI_VERSION
• FILE_READ_MODE
• FILE_WRITE_MODE
• DIR_READ_MODE
• DIR_WRITE_MODE
• FOPEN_READ
• FOPEN_READ_WRITE
• FOPEN_WRITE_CREATE_DESTRUCTIVE
• FOPEN_READ_WRITE_CREATE_DESTRUCTIVE
Saturday, July 27, 13
Ejercicio #2
1. Generar un controlador llamado “Ejercicio”.
2. En el controlador mandar llamar la función
phpinfo().
3. Establecer este controlador como default.
Saturday, July 27, 13
Vistas
• Son archivos HTML o fragmentos de código HTML
los cuales son llamados desde el controlador.
• Se guardan en el directorio de views.
• Para cargarlas se utiliza en el controlador:
$this->load->view('vista');
• Las vistas sólo deben de llevar código PHP para
desplegar información. Cómo máximo utilizar for o
foreach.
Saturday, July 27, 13
Vistas
• A las vistas se le podrá pasar información a través de
un arreglo de datos.
$data = array();
$data['titulo'] = 'Hola';
$this->load->view('vista',$data);
• Ya en la vista esta información podrá ser desplegada
como una variable PHP
echo $titulo;
Saturday, July 27, 13
Ejercicio #3
1. Generar una vista llamada vista_ejercicio.php con la mínima
estructura de un archivo HTML.
2. Mandar llamar la vista desde el controlador.
3. Generar la siguiente información en un arreglo dentro del
controlador.
1. titulo
2. header
3. cuerpo
4. footer
4. Pasar esta información a la vista y desplegarla en la misma.
Saturday, July 27, 13
Modelos
• Son clases que están diseñadas para trabajar con la información de tu base de datos.
• Se almacenan dentro del directorio models/
• La clase deberá de empezar con letra mayúscula y el archivo deberá de llamarse en
minúsculas con el nombre de la clase blog_model.php
<?php
class Blog extends CI_Model{
	

 public function __construct()
	

 {
	

 	

 parent::__construct();
	

 }
}
?>
Saturday, July 27, 13
Modelos
• Para cargar un modelo dentro del controlador
se utiliza la siguiente instrucción.
$this->load->model('Blog');
• Una vez cargado podrá ser utilizado de la
siguiente mantera en el controlador
$this->Blog->funcion
Saturday, July 27, 13
Ejercicio #4
1. Generar una base de datos en MySQL llamada
n3_ejercicio.
2. Generar un usuario con los privilegios para poder utilizar
la base de datos creada en el paso anterior.
3. Generar una tabla llamada test con la siguiente estructura:
1. id - int - not null - primary key - ai
2. columna1 - varchar(255)
3. columna2 - int
4. columna3 - float
Saturday, July 27, 13
Ejercicio #4
4. Crear un modelo llamado “Ejercicio”.
5. Crear un método el cual obtenga toda la información de la
tabla “test”.
6. Crear un método al cual se le pase un parámetro en el que se
defina el id del registro que se quiere obtener.
7. Crear un método para insertar información en la tabla ”test”.
8. Crear un método para actualizar informaicón en la tabla “test”.
9. Crear un método para eliminar un registro indicado en la tabla
“test”.
10. Mandar llamar este modelo desde el controlador.
Saturday, July 27, 13
Helpers
• Cómo el nombre lo sugiere, ayudan con tareas.
• Cada helper es una colección de funciones de
una categoría en particular.
• Para cargar helpers usamos.
$this->load->helper('name');
Saturday, July 27, 13
Helpers
• Ya que el helper es cargado. La función o
funciones que estén definidas dentro de este se
utilizan como cualquier otra función de PHP.
funcion_de_helper(par1,par2);
Saturday, July 27, 13
Librerias de CI
• Están localizadas en el directorio system/libraries.
• Se utilizan desde un controlador.
$this->load->library('class name');
$this->load->library(array('class1', 'class2'));
• Se utilizan de la siguiente manera
$this->class1->método();
$this->class2->método();
Saturday, July 27, 13
Librerías propias
• Se pueden crear librerías personales en la carpeta application/libraries.
<?php if ( ! defined('BASEPATH')) exit('No direct script
access allowed');
class Someclass {
    public function __construct($params)
    {
        // Do something with $params
    }
}
?>
Saturday, July 27, 13
Hooks
• Son puntos en el flujo de CI los cuales permitirán ejecutar código:
• Antes de que cargue el sistema (pre_system)
• Antes de cargar un controlador (pre_controller)
• Después del constructor de un controlador
(post_controller_constructor)
• Después de un controlador (post_controller)
• Durante el despliegue de información (display_override)
• Durante el despliegue de cache (cache_override)
• Después de la ejecución del sistema (post_system)
Saturday, July 27, 13
Hooks
• Hay que activarlos en application/config/
config.php
$config['enable_hooks'] = TRUE;
• Son definidos en el archivo application/config/
hooks.php
• Y las funciones en application/hooks como una
clase com sus respectivos métodos.
Saturday, July 27, 13
Hooks
• La definición de un hook se puede ver a continuación.
$hook['pre_controller'] = array(
             'class'    => 'MyClass',
             'function' => 'Myfunction',
             'filename' => 'Myclass.php',
             'filepath' => 'hooks',
             'params'   => array('beer', 'wine', 'snacks')
);
Saturday, July 27, 13
Manejo de errores
• Existen funciones en CI para generar errores
y personalizarlos.
• show_error(‘mensaje’,código). Esta función
desplegará el archivo application/errors/
error_general.php
Saturday, July 27, 13
Seguridad
• Por default CI restringer en sus URL’s los siguientes
caracteres.
• Texto alfanumérico
• Tilde ~
• Punto .
• Dos puntos :
• Guión bajo _
• Guión -
Saturday, July 27, 13
Seguridad
• Antes de aceptar información en tu aplicación
será necesario.
• Filtrar los datos obtenidos
• Validar los datos asegurándonos que es el
tipo correcto de dato, longitud, tamaño, etc.
• Escapar todos los datos antes de
insertarlos en la base de datos.
Saturday, July 27, 13
Ejercicio #5
1. Generar un método en el modelo de la tabla codeigniter
a el cual se le pasen tres parámetros.
• Primer parámetro: campo a actualizar
• Segundo parámetro: valor
• Tercer parámetro: id o llave
2. Estos parámetros serán enviados al modelo edsde el
controlador.
3. Así mismo estos parámetros se harán llegar al
controlador por medio del método GET
Saturday, July 27, 13
Ejercicio #6
1. Generar una tabla nueva en MySQL con 2
columnas ya gregar 100 registros en
contenido.
2. Aplicar un paginador de 20 renglones por
página.
Saturday, July 27, 13

Más contenido relacionado

La actualidad más candente

La actualidad más candente (6)

Frameworks JAVA EE 5 de marzo de 2.012
Frameworks JAVA EE 5 de marzo de 2.012Frameworks JAVA EE 5 de marzo de 2.012
Frameworks JAVA EE 5 de marzo de 2.012
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Anatomia de un módulo en drupal 8
Anatomia de un módulo en drupal 8Anatomia de un módulo en drupal 8
Anatomia de un módulo en drupal 8
 
Migración de datos en drupal 8
Migración de datos en drupal 8Migración de datos en drupal 8
Migración de datos en drupal 8
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Webpack desde cero
Webpack desde ceroWebpack desde cero
Webpack desde cero
 

Similar a Code Igniter

Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE MadridKubide
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalSiteGround España
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corporacion de Industrias Tecnologicas S.A.
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptxGabriela Soto
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...Pablo Godel
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptxSibilinoAndante
 

Similar a Code Igniter (20)

Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE Madrid
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 

Último

Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 

Último (20)

Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 

Code Igniter

  • 1. Code Igniter Ene al Cubo - Febrero 2012 claudio@enealcubo.com Saturday, July 27, 13
  • 2. Temario • El concepto MVC • Requerimientos • Instalando Code Igniter • Estructura de directorios • Flujo de Información • Coding standard • Configuración inicial • Utilizando URL’s y rutas • Controladores • Vistas • Modelos • Helpers • Bibliotecas • Carga automática de recursos • Bibliotecas propias • Caché • Manejo de errores • Seguridad Saturday, July 27, 13
  • 3. El concepto MVC • Modelo /Vista / Controlador • Concepto introducido por los diseñadores del lenguaje Smaltalk. • Utilizado generalmente para aplicaciones GUI. • El concepto principal trata de encapsular o partir una aplicación en tres. Saturday, July 27, 13
  • 4. El concepto MVC • Modelo • Es un objeto que representa datos o actividad. • Como por ejemplo una tabla de una base de datos, un archivo o algún otro medio que arroje datos almacenados. • Si llegas a necesitar un modelo con datos no relacionados será necesario dividir este modelo en dos y crear uno diferente. Saturday, July 27, 13
  • 5. El concepto MVC • Vista • Es una forma visual de reflejar el estado del modelo. • Esta parte es respondable de mapear la visualización a un dispositivo. • Puede haber mas de una vista relacionada al modelo ya que los estados de este último puede variar. Saturday, July 27, 13
  • 6. El concepto MVC • Controlador • Ofrece la facilidad de cambiar el estado de un modelo. • Es el enlace entre modelo y vista. • Acepta datos del usuario e instruye al modelo y a la vista para accionar mecanismos. • Es responsable de ampear las acciones del usuario a la aplicación. Saturday, July 27, 13
  • 7. El concepto MVC Modelo Controlador Vista Saturday, July 27, 13
  • 8. El concepto MVC • El modelo apunta a la vista con lo cual este envia pequeños mensajes de cambio de su estado. • El modelo nunca debe de saber que tipo de vista se utiliza. • Por otro lado la vista debe de saber que tipo de modelo está observando. • Así mismo la vista podrá mandar llamar cualquiera de las funciones del modelo por medio del controlador. • El controlador apunta a las otras dos partes en forma sólida ya que necesita saber el tipo de ambos. Saturday, July 27, 13
  • 9. El concepto MVC • Otros conceptos o modelos parecidos al MVC podemos mencionar al ORM (Object-relational Mapping) • Así mismo podemos mencionar frameworks de desarrollo web que soportan MVC. • Code Ingniter • Cake PHP • Zend Framework Saturday, July 27, 13
  • 10. Code Igniter • Es un framework muy simplificado para desarrolladores PHP para crear poderosas aplicaciones web. Saturday, July 27, 13
  • 11. Code Igniter (CI) • Características • Alto rendimiento. • Poca configuración inicial. • No requiere uso de línea de comandos. • No tiene reglas restrictivas de codificación. • No requiere librerías externas como PEAR. Aunque se pueden utilizar. • No requiere que aprendas lenguaje de templates para generar las vistas. (SMARTY por ejemplo). Aunque lo soporta. • Documentación simple y clara. • URL’s limpios Saturday, July 27, 13
  • 12. Requerimientos de CI • PHP 4.3.2 en adelante. Con cualquier web server. • Base de datos para almacenar información. • MySQL (4.1) • MS SQL • Oracle • Sqlite • ODBC Saturday, July 27, 13
  • 13. Licencia de CI • Licencia Copyright a nombre de EllisLab Inc. • Se permite el uso de este producto siempre y cuando: • Se distribuya una copia de esta licencia.A grandes rasgos. =) Saturday, July 27, 13
  • 14. Instalación de CI • Descargar el archivo de la versión estable del framework del sitio www.codeigniter.com. • La versión actual es la 2.1.0 ya no soporta PHP 4.x • La versión que soporta PHP 4.x y 5.x es la 1.7.3 Saturday, July 27, 13
  • 15. Instalación de CI • Proceso de instalación. 1. Desempacar el archivo en un directorio que no esté publicado en web. 2. Crear una carpeta en el directorio de su web server (htdocs, www, inetpub, etc). 3. Copiar los archivos del CI en esta carpeta. Saturday, July 27, 13
  • 16. Ejercicio #1 1. Instalar CI en su ambiente de desarrollo *AMP 2. Probar la funcionalidad accesando por medio de un browser. Saturday, July 27, 13
  • 17. Estructura • system/ • core/ • database/ • fonts/ • helpers • language/ • libraries/ Saturday, July 27, 13
  • 18. Estructura • application/ • cache • config/ • controllers/ • core/ • errors/ • helpers/ • hooks/ • language/ • libraries/ • logs/ • models/ • third_party/ • views/ Saturday, July 27, 13
  • 19. Estructura • Es posible tener una sola instalación para diferentes aplicaciones. application/foo/ application/foo/config/ application/foo/controllers/ application/foo/errors/ application/foo/libraries/ application/foo/models/ application/foo/views/ application/bar/ application/bar/config/ application/bar/controllers/ application/bar/errors/ application/bar/libraries/ application/bar/models/ application/bar/views/ Saturday, July 27, 13
  • 20. Estructura • Para seleccionar una aplicación en especial es necesario editar el archivo index.php y cambiar la variable $application_folder = “application/foo”. • Cada una de las aplicaciones necesitará su propio archivo index.php. Este archivo se podrá tener otro nombre. Saturday, July 27, 13
  • 21. Flujo de Información • El archivo index.php inicializa la aplicación. • El Router analiza el encabezado HTTP para determinar que se hará. • Si existe cache esta información se envía directamente al browser. • Luego la información es filtrada por un módulo de seguridad. • El controlador carga los modelos, bibilotecas, plugins, helpers y cualquier otro recurso que se necesite. • Al finalizar esto la vista es renderizada y enviada al navegador. Si el cache está activado esta es enviada al cache para respuestas futuras. Saturday, July 27, 13
  • 22. Coding Standar • Formato de archivos • Codificación UTF-8 • Terminación de línea “LF” • IDE’s • Notepad - Notepad++ • Textmate • Aptana - Eclipse • Dreamweaver • HTML Kit Saturday, July 27, 13
  • 23. Coding Standar • Etiquetas PHP Incorrecto <?php echo “Hola”; ?> Correcto <?php echo “Hola”; /* End of file myfile.php */ /* Location ./system/modules/mymodule/myfile.php */ Saturday, July 27, 13
  • 24. Coding Standar • Nombrado de clases Incorrecto class superclass class superClass Correcto class Super_class Saturday, July 27, 13
  • 25. Coding Standar • Nombrado de métodos Incorrecto function propiedadesarchivo() function propiedadesArchivo() function getfileproperties() function getFileProperties() function get_file_properties_from_the_file() Saturday, July 27, 13
  • 26. Coding Standar • Nombrado de métodos Correcto function get_file_properties() Saturday, July 27, 13
  • 27. Coding Standar • Nombres de variables Incorrecto $j = ‘foo’; $Str $nombreVariable $nombrevariable $nombre_de_variable_muy_largo Saturday, July 27, 13
  • 28. Coding Standar • Variables Correcto for ($j = 0; $j < 10; $j++) $str $buffer $group_id $last_city Saturday, July 27, 13
  • 29. Coding Standar • Indentación de estructuras Incorrecto function myfunct(){ // } if ($foo == $bar){ // } Saturday, July 27, 13
  • 30. Coding Standar • Indentación de estructuras Correcto function myfunct() { // } if ($foo == $bar) { // } Saturday, July 27, 13
  • 31. Configuración CI • Existen dos tipos de configuraciones, la simple y la avanzada. • Configuración Inicial • Abrir el archivo application/config/ config.php Saturday, July 27, 13
  • 32. Carga Automática de Recursos Proyecto Controlador Método $this->load dentro del método $this->load dentro del constructor config/autoload.php Saturday, July 27, 13
  • 33. URL’s limpios • Por default CI está diseñado para que sea amigable con la lectura de los URL’s tanto para los humanos como para los motores de búsqueda. example.com/index.php/class/function/ID 1. El primer argumento representa el nombre de la clase del controlador. 2. El segundo reprsenta el nombre del método o de la función 3. El tercero representa el argumento o argumentos a pasar al método o función. Saturday, July 27, 13
  • 34. Controladores • Es una clase definida en un archivo la cual es una forma de acceso al URL. • Se guardan en el directorio controllers • Ejemplo. <?php class Blog extends CI_Controller { public function index() { echo 'Hello World!'; } } ?> Saturday, July 27, 13
  • 35. Controladores • El nombre de la clase del controlador deberá de empezar con mayúscula. • Para definir un controlador default hay que configurarlo en el archivo application/config/ routes.php $route['default_controller'] = 'Blog'; Saturday, July 27, 13
  • 36. Controladores • En algunas ocasiones es necesario crear un método constructor para cargar algunos recursos al controlador.   public function __construct()        {             parent::__construct();             // Código fuente        } Saturday, July 27, 13
  • 37. Palabras Reservadas • No llamar a tu controlador como: • Controller • CI_Base • _ci_initialize • Default • index Saturday, July 27, 13
  • 38. Palabras Reservadas • No llamar las funciones: • is_really_writable() • load_class() • get_config() • show_error() • show_404() • log_message() • _exeption_handlrer() • get_instance() Saturday, July 27, 13
  • 39. Palabras Reservadas • No llamar variables • $config • $mimes • $lang Saturday, July 27, 13
  • 40. Palabras Reservadas • No llamar constantes • EXT • FCPATH • SELF • BASEPATH • APPPATH • CI_VERSION • FILE_READ_MODE • FILE_WRITE_MODE • DIR_READ_MODE • DIR_WRITE_MODE • FOPEN_READ • FOPEN_READ_WRITE • FOPEN_WRITE_CREATE_DESTRUCTIVE • FOPEN_READ_WRITE_CREATE_DESTRUCTIVE Saturday, July 27, 13
  • 41. Ejercicio #2 1. Generar un controlador llamado “Ejercicio”. 2. En el controlador mandar llamar la función phpinfo(). 3. Establecer este controlador como default. Saturday, July 27, 13
  • 42. Vistas • Son archivos HTML o fragmentos de código HTML los cuales son llamados desde el controlador. • Se guardan en el directorio de views. • Para cargarlas se utiliza en el controlador: $this->load->view('vista'); • Las vistas sólo deben de llevar código PHP para desplegar información. Cómo máximo utilizar for o foreach. Saturday, July 27, 13
  • 43. Vistas • A las vistas se le podrá pasar información a través de un arreglo de datos. $data = array(); $data['titulo'] = 'Hola'; $this->load->view('vista',$data); • Ya en la vista esta información podrá ser desplegada como una variable PHP echo $titulo; Saturday, July 27, 13
  • 44. Ejercicio #3 1. Generar una vista llamada vista_ejercicio.php con la mínima estructura de un archivo HTML. 2. Mandar llamar la vista desde el controlador. 3. Generar la siguiente información en un arreglo dentro del controlador. 1. titulo 2. header 3. cuerpo 4. footer 4. Pasar esta información a la vista y desplegarla en la misma. Saturday, July 27, 13
  • 45. Modelos • Son clases que están diseñadas para trabajar con la información de tu base de datos. • Se almacenan dentro del directorio models/ • La clase deberá de empezar con letra mayúscula y el archivo deberá de llamarse en minúsculas con el nombre de la clase blog_model.php <?php class Blog extends CI_Model{ public function __construct() { parent::__construct(); } } ?> Saturday, July 27, 13
  • 46. Modelos • Para cargar un modelo dentro del controlador se utiliza la siguiente instrucción. $this->load->model('Blog'); • Una vez cargado podrá ser utilizado de la siguiente mantera en el controlador $this->Blog->funcion Saturday, July 27, 13
  • 47. Ejercicio #4 1. Generar una base de datos en MySQL llamada n3_ejercicio. 2. Generar un usuario con los privilegios para poder utilizar la base de datos creada en el paso anterior. 3. Generar una tabla llamada test con la siguiente estructura: 1. id - int - not null - primary key - ai 2. columna1 - varchar(255) 3. columna2 - int 4. columna3 - float Saturday, July 27, 13
  • 48. Ejercicio #4 4. Crear un modelo llamado “Ejercicio”. 5. Crear un método el cual obtenga toda la información de la tabla “test”. 6. Crear un método al cual se le pase un parámetro en el que se defina el id del registro que se quiere obtener. 7. Crear un método para insertar información en la tabla ”test”. 8. Crear un método para actualizar informaicón en la tabla “test”. 9. Crear un método para eliminar un registro indicado en la tabla “test”. 10. Mandar llamar este modelo desde el controlador. Saturday, July 27, 13
  • 49. Helpers • Cómo el nombre lo sugiere, ayudan con tareas. • Cada helper es una colección de funciones de una categoría en particular. • Para cargar helpers usamos. $this->load->helper('name'); Saturday, July 27, 13
  • 50. Helpers • Ya que el helper es cargado. La función o funciones que estén definidas dentro de este se utilizan como cualquier otra función de PHP. funcion_de_helper(par1,par2); Saturday, July 27, 13
  • 51. Librerias de CI • Están localizadas en el directorio system/libraries. • Se utilizan desde un controlador. $this->load->library('class name'); $this->load->library(array('class1', 'class2')); • Se utilizan de la siguiente manera $this->class1->método(); $this->class2->método(); Saturday, July 27, 13
  • 52. Librerías propias • Se pueden crear librerías personales en la carpeta application/libraries. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Someclass {     public function __construct($params)     {         // Do something with $params     } } ?> Saturday, July 27, 13
  • 53. Hooks • Son puntos en el flujo de CI los cuales permitirán ejecutar código: • Antes de que cargue el sistema (pre_system) • Antes de cargar un controlador (pre_controller) • Después del constructor de un controlador (post_controller_constructor) • Después de un controlador (post_controller) • Durante el despliegue de información (display_override) • Durante el despliegue de cache (cache_override) • Después de la ejecución del sistema (post_system) Saturday, July 27, 13
  • 54. Hooks • Hay que activarlos en application/config/ config.php $config['enable_hooks'] = TRUE; • Son definidos en el archivo application/config/ hooks.php • Y las funciones en application/hooks como una clase com sus respectivos métodos. Saturday, July 27, 13
  • 55. Hooks • La definición de un hook se puede ver a continuación. $hook['pre_controller'] = array(              'class'    => 'MyClass',              'function' => 'Myfunction',              'filename' => 'Myclass.php',              'filepath' => 'hooks',              'params'   => array('beer', 'wine', 'snacks') ); Saturday, July 27, 13
  • 56. Manejo de errores • Existen funciones en CI para generar errores y personalizarlos. • show_error(‘mensaje’,código). Esta función desplegará el archivo application/errors/ error_general.php Saturday, July 27, 13
  • 57. Seguridad • Por default CI restringer en sus URL’s los siguientes caracteres. • Texto alfanumérico • Tilde ~ • Punto . • Dos puntos : • Guión bajo _ • Guión - Saturday, July 27, 13
  • 58. Seguridad • Antes de aceptar información en tu aplicación será necesario. • Filtrar los datos obtenidos • Validar los datos asegurándonos que es el tipo correcto de dato, longitud, tamaño, etc. • Escapar todos los datos antes de insertarlos en la base de datos. Saturday, July 27, 13
  • 59. Ejercicio #5 1. Generar un método en el modelo de la tabla codeigniter a el cual se le pasen tres parámetros. • Primer parámetro: campo a actualizar • Segundo parámetro: valor • Tercer parámetro: id o llave 2. Estos parámetros serán enviados al modelo edsde el controlador. 3. Así mismo estos parámetros se harán llegar al controlador por medio del método GET Saturday, July 27, 13
  • 60. Ejercicio #6 1. Generar una tabla nueva en MySQL con 2 columnas ya gregar 100 registros en contenido. 2. Aplicar un paginador de 20 renglones por página. Saturday, July 27, 13