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
• ...
El concepto MVC
• Modelo /Vista / Controlador
• Concepto introducido por los diseñadores
del lenguaje Smaltalk.
• Utilizad...
El concepto MVC
• Modelo
• Es un objeto que representa datos o actividad.
• Como por ejemplo una tabla de una base de
dato...
El concepto MVC
• Vista
• Es una forma visual de reflejar el estado del
modelo.
• Esta parte es respondable de mapear la
vi...
El concepto MVC
• Controlador
• Ofrece la facilidad de cambiar el estado de un
modelo.
• Es el enlace entre modelo y vista...
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...
El concepto MVC
• Otros conceptos o modelos parecidos al MVC
podemos mencionar al ORM (Object-relational
Mapping)
• Así mi...
Code Igniter
• Es un framework muy simplificado para
desarrolladores PHP para crear poderosas
aplicaciones web.
Saturday, J...
Code Igniter (CI)
• Características
• Alto rendimiento.
• Poca configuración inicial.
• No requiere uso de línea de comando...
Requerimientos de CI
• PHP 4.3.2 en adelante. Con cualquier web server.
• Base de datos para almacenar información.
• MySQ...
Licencia de CI
• Licencia Copyright a nombre de EllisLab Inc.
• Se permite el uso de este producto siempre y
cuando:
• Se ...
Instalación de CI
• Descargar el archivo de la versión estable del
framework del sitio www.codeigniter.com.
• La versión a...
Instalación de CI
• Proceso de instalación.
1. Desempacar el archivo en un directorio
que no esté publicado en web.
2. Cre...
Ejercicio #1
1. Instalar CI en su ambiente de desarrollo
*AMP
2. Probar la funcionalidad accesando por medio
de un browser...
Estructura
• system/
• core/
• database/
• fonts/
• helpers
• language/
• libraries/
Saturday, July 27, 13
Estructura
• application/
• cache
• config/
• controllers/
• core/
• errors/
• helpers/
• hooks/
• language/
• libraries/
•...
Estructura
• Es posible tener una sola instalación para
diferentes aplicaciones.
application/foo/
application/foo/config/
...
Estructura
• Para seleccionar una aplicación en especial es
necesario editar el archivo index.php y
cambiar la variable $a...
Flujo de Información
• El archivo index.php inicializa la aplicación.
• El Router analiza el encabezado HTTP para determin...
Coding Standar
• Formato de archivos
• Codificación UTF-8
• Terminación de línea “LF”
• IDE’s
• Notepad - Notepad++
• Textm...
Coding Standar
• Etiquetas PHP
Incorrecto
<?php
echo “Hola”;
?>
Correcto
<?php
echo “Hola”;
/* End of file myfile.php */
/* ...
Coding Standar
• Nombrado de clases
Incorrecto
class superclass
class superClass
Correcto
class Super_class
Saturday, July...
Coding Standar
• Nombrado de métodos
Incorrecto
function propiedadesarchivo()
function propiedadesArchivo()
function getfil...
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_...
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,...
Coding Standar
• Indentación de estructuras
Correcto
function myfunct()
{
//
}
if ($foo == $bar)
{
//
}
Saturday, July 27,...
Configuración CI
• Existen dos tipos de configuraciones, la
simple y la avanzada.
• Configuración Inicial
• Abrir el archivo ...
Carga Automática de Recursos
Proyecto
Controlador
Método
$this->load dentro del
método
$this->load dentro del
constructor
...
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...
Controladores
• Es una clase definida en un archivo la cual es una forma de acceso al URL.
• Se guardan en el directorio co...
Controladores
• El nombre de la clase del controlador deberá
de empezar con mayúscula.
• Para definir un controlador defaul...
Controladores
• En algunas ocasiones es necesario crear un método
constructor para cargar algunos recursos al
controlador....
Palabras Reservadas
• No llamar a tu controlador como:
• Controller
• CI_Base
• _ci_initialize
• Default
• index
Saturday,...
Palabras Reservadas
• No llamar las funciones:
• is_really_writable()
• load_class()
• get_config()
• show_error()
• show_4...
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...
Ejercicio #2
1. Generar un controlador llamado “Ejercicio”.
2. En el controlador mandar llamar la función
phpinfo().
3. Es...
Vistas
• Son archivos HTML o fragmentos de código HTML
los cuales son llamados desde el controlador.
• Se guardan en el di...
Vistas
• A las vistas se le podrá pasar información a través de
un arreglo de datos.
$data = array();
$data['titulo'] = 'H...
Ejercicio #3
1. Generar una vista llamada vista_ejercicio.php con la mínima
estructura de un archivo HTML.
2. Mandar llama...
Modelos
• Son clases que están diseñadas para trabajar con la información de tu base de datos.
• Se almacenan dentro del d...
Modelos
• Para cargar un modelo dentro del controlador
se utiliza la siguiente instrucción.
$this->load->model('Blog');
• ...
Ejercicio #4
1. Generar una base de datos en MySQL llamada
n3_ejercicio.
2. Generar un usuario con los privilegios para po...
Ejercicio #4
4. Crear un modelo llamado “Ejercicio”.
5. Crear un método el cual obtenga toda la información de la
tabla “t...
Helpers
• Cómo el nombre lo sugiere, ayudan con tareas.
• Cada helper es una colección de funciones de
una categoría en pa...
Helpers
• Ya que el helper es cargado. La función o
funciones que estén definidas dentro de este se
utilizan como cualquier...
Librerias de CI
• Están localizadas en el directorio system/libraries.
• Se utilizan desde un controlador.
$this->load->li...
Librerías propias
• Se pueden crear librerías personales en la carpeta application/libraries.
<?php if ( ! defined('BASEPAT...
Hooks
• Son puntos en el flujo de CI los cuales permitirán ejecutar código:
• Antes de que cargue el sistema (pre_system)
•...
Hooks
• Hay que activarlos en application/config/
config.php
$config['enable_hooks'] = TRUE;
• Son definidos en el archivo app...
Hooks
• La definición de un hook se puede ver a continuación.
$hook['pre_controller'] = array(
             'class'    => '...
Manejo de errores
• Existen funciones en CI para generar errores
y personalizarlos.
• show_error(‘mensaje’,código). Esta f...
Seguridad
• Por default CI restringer en sus URL’s los siguientes
caracteres.
• Texto alfanumérico
• Tilde ~
• Punto .
• D...
Seguridad
• Antes de aceptar información en tu aplicación
será necesario.
• Filtrar los datos obtenidos
• Validar los dato...
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...
Ejercicio #6
1. Generar una tabla nueva en MySQL con 2
columnas ya gregar 100 registros en
contenido.
2. Aplicar un pagina...
Upcoming SlideShare
Loading in …5
×

Code Igniter

878 views
815 views

Published on

PHP with Code Igniter

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
878
On SlideShare
0
From Embeds
0
Number of Embeds
54
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Code Igniter

  1. 1. Code Igniter Ene al Cubo - Febrero 2012 claudio@enealcubo.com Saturday, July 27, 13
  2. 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. 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. 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. 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. 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. 7. El concepto MVC Modelo Controlador Vista Saturday, July 27, 13
  8. 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. 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. 10. Code Igniter • Es un framework muy simplificado para desarrolladores PHP para crear poderosas aplicaciones web. Saturday, July 27, 13
  11. 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. 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. 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. 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. 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. 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. 17. Estructura • system/ • core/ • database/ • fonts/ • helpers • language/ • libraries/ Saturday, July 27, 13
  18. 18. Estructura • application/ • cache • config/ • controllers/ • core/ • errors/ • helpers/ • hooks/ • language/ • libraries/ • logs/ • models/ • third_party/ • views/ Saturday, July 27, 13
  19. 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. 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. 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. 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. 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. 24. Coding Standar • Nombrado de clases Incorrecto class superclass class superClass Correcto class Super_class Saturday, July 27, 13
  25. 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. 26. Coding Standar • Nombrado de métodos Correcto function get_file_properties() Saturday, July 27, 13
  27. 27. Coding Standar • Nombres de variables Incorrecto $j = ‘foo’; $Str $nombreVariable $nombrevariable $nombre_de_variable_muy_largo Saturday, July 27, 13
  28. 28. Coding Standar • Variables Correcto for ($j = 0; $j < 10; $j++) $str $buffer $group_id $last_city Saturday, July 27, 13
  29. 29. Coding Standar • Indentación de estructuras Incorrecto function myfunct(){ // } if ($foo == $bar){ // } Saturday, July 27, 13
  30. 30. Coding Standar • Indentación de estructuras Correcto function myfunct() { // } if ($foo == $bar) { // } Saturday, July 27, 13
  31. 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. 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. 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. 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. 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. 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. 37. Palabras Reservadas • No llamar a tu controlador como: • Controller • CI_Base • _ci_initialize • Default • index Saturday, July 27, 13
  38. 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. 39. Palabras Reservadas • No llamar variables • $config • $mimes • $lang Saturday, July 27, 13
  40. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×