Presentación Framework CodeIgniter

11,599 views
11,467 views

Published on

Iniciación al desarrollo PHP con el Framework CodeIgniter por José Manuel Lucas

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

No Downloads
Views
Total views
11,599
On SlideShare
0
From Embeds
0
Number of Embeds
1,867
Actions
Shares
0
Downloads
536
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Presentación Framework CodeIgniter

  1. 1. Iniciación al desarrollo PHP con el Framework CodeIgniter por José Manuel Lucas / @jmlwebmiércoles 29 de junio de 2011
  2. 2. Hashtag #adwe_murmiércoles 29 de junio de 2011
  3. 3. Iniciación al desarrollo PHP con el framework Codeigniter Indice - Introducción -¿Qué es un framework? ¿Qué es MVC? -¿Qué alternativas hay?, ¿Por qué CodeIgniter? - Primeros pasos con Codeigniter -Instalación, configuración y enrutado con CI -Flujo de trabajo: Controladores, Modelos y Vistas -Librerías y Helpers - Extra José Manuel Lucasmiércoles 29 de junio de 2011
  4. 4. Iniciación al desarrollo PHP con el framework Codeigniter Introducción José Manuel Lucasmiércoles 29 de junio de 2011
  5. 5. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué es un framework? -CONVENCIONES + FUNCIONALIDADES + LIBRERÍAS -OBJETIVO: Agilizar y organizar desarrollo, evitar tareas repetitivas... EJEMPLOS EN FRAMEWORKS PHP: -Librerías: Enrutado, MVC, Plantillas -Abstracción de BBDD (Las consultas son independientes del motor, MySQL, Oracle, MSSQL...) José Manuel Lucasmiércoles 29 de junio de 2011
  6. 6. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué es MVC? -Separación entre lógica y presentación, dividiendo las tareas en 3 partes: Controlador Recibe los datos, los interpreta y los dirige al modelo o a la vista. 1 José Manuel Lucasmiércoles 29 de junio de 2011
  7. 7. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué es MVC? -Separación entre lógica y presentación, dividiendo las tareas en 3 partes: Modelo Controlador Encargado de obtener los Recibe los datos, los datos de la BBDD interpreta y los dirige al modelo o a la vista. 2 1 José Manuel Lucasmiércoles 29 de junio de 2011
  8. 8. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué es MVC? -Separación entre lógica y presentación, dividiendo las tareas en 3 partes: Modelo Vista Controlador Encargado de Presenta los datos Recibe los datos, obtener los datos (capa de layout) los interpreta y los de la BBDD dirige al modelo o a la vista. 2 3 1 José Manuel Lucasmiércoles 29 de junio de 2011
  9. 9. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué alternativas hay? -Yo me lo guiso, yo me lo como: VENTAJAS: Conocimiento profundo del funcionamiento interno DESVENTAJAS: Mayor tiempo de desarrollo, menor revisión del código José Manuel Lucasmiércoles 29 de junio de 2011
  10. 10. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué alternativas hay? -CMS (Wordpress, Drupal...): VENTAJAS: Mayor velocidad de desarrollo, código mantenido por la comunidad DESVENTAJAS: Menor control sobre el código, no siempre es posible, rendimiento... José Manuel Lucasmiércoles 29 de junio de 2011
  11. 11. Iniciación al desarrollo PHP con el framework Codeigniter ¿Qué alternativas hay? -Otros frameworks: Symfony Zend Framework CakePHP Vevui YII FuelPHP Yupp José Manuel Lucasmiércoles 29 de junio de 2011
  12. 12. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? Recomendado por el creador de PHP Llévale la contraria... ...si te atreves José Manuel Lucasmiércoles 29 de junio de 2011
  13. 13. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 1) Abierto Puedes copiar, modificar, crear proyectos relacionados... El código fuente está disponible en BitBucket Propiedad de Ellislab Proyectos derivados: FuelCMS, planet-ci... José Manuel Lucasmiércoles 29 de junio de 2011
  14. 14. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 2) Configuración MUY sencilla -Vectores definidos en ficheros, dentro del directorio “config” -Por defecto: config.php, database.php, autoload.php, etc -Podemos añadir otros: nav.php, twitter.php, etc... EJEMPLO: $config[ʻtitleʼ] = ʻCharla sobre CodeIgniterʼ José Manuel Lucasmiércoles 29 de junio de 2011
  15. 15. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 3) Arquitectura MVC a) CONTROLADORES: “application/controllers” Cargan y gestionan recursos (modelos, vistas, librerías...) Redirigen la URL al método correspondiente: “http://www.url.com/controlador/método/parámetro1/ parámetro2/...” => BUENO PARA EL SEO ;) José Manuel Lucasmiércoles 29 de junio de 2011
  16. 16. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 3) Arquitectura MVC b) MODELOS: “application/models” Lógica de negocio e información del sistema “Parte de la Base de Datos” en términos coloquiales :) Independiente del sistema gestor de BBDD José Manuel Lucasmiércoles 29 de junio de 2011
  17. 17. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 3) Arquitectura MVC c) VISTAS: “application/views” Parte de presentación de datos Mayormente HTML, con un poco de PHP Puede utilizar pseudovariables => {title} José Manuel Lucasmiércoles 29 de junio de 2011
  18. 18. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 4) Soporte para diferentes motores de BBDD MySQL/MySQLi PostgreSQL ODBC & MSSQL SQLITE Oracle José Manuel Lucasmiércoles 29 de junio de 2011
  19. 19. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 5) Amplia Comunidad Wiki, foro, bugtracker, etc en http://www.codeigniter.com Muchos tutoriales, presentaciones, directorios de recursos... “CodeIgniter Community Chieftain” = MODERADOR CICON => Conferencia a nivel mundial José Manuel Lucasmiércoles 29 de junio de 2011
  20. 20. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 6) Librerías para casi todo Seguridad, Validación de formularios, Sesiones, Email, FTP, Redimensionar imágenes, Paginación... + LIBRERÍAS EXTERNAS (Twitter, Facebook, etc...) http://www.codeigniterdirectory.com José Manuel Lucasmiércoles 29 de junio de 2011
  21. 21. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 7) Curva de aprendizaje corta No obliga a estudiar nueva sintaxis. “Lo bueno, si breve, dos veces bueno y aún lo malo, si poco, no tan malo”, Baltasar Gracián (¿Hace falta más explicación?) José Manuel Lucasmiércoles 29 de junio de 2011
  22. 22. Iniciación al desarrollo PHP con el framework Codeigniter ¿Por qué CodeIgniter? 8) Soporte para plantillas Aunque no es necesario, se pueden usar pseudovariables en las vistas. => Más cómodo para diseñadores {blog_entries} <h5>{title}</h5> <p>{body}</p> {/blog_entries} José Manuel Lucasmiércoles 29 de junio de 2011
  23. 23. Iniciación al desarrollo PHP con el framework Codeigniter Primeros pasos con CodeIgniter José Manuel Lucasmiércoles 29 de junio de 2011
  24. 24. Iniciación al desarrollo PHP con el framework Codeigniter Instalación y configuración mínima 1) Configurar un host virtual (Wamp, Mamp, XAMPP...) 2) Descargar última versión de CodeIgniter (http://www.codeigniter.com/downloads) 3) Descomprimir el fichero en el directorio al que apunta el host virtual. José Manuel Lucasmiércoles 29 de junio de 2011
  25. 25. Iniciación al desarrollo PHP con el framework Codeigniter Instalación y configuración mínima application/config/config.php $config[base_url]    http://mihost.com/; = $config[index_page]   =  ;  //modificar  el  .htaccess $config[global_xss_filtering]   =  TRUE;  //Más  seguro José Manuel Lucasmiércoles 29 de junio de 2011
  26. 26. Iniciación al desarrollo PHP con el framework Codeigniter Instalación y configuración mínima ...y ya está!!! José Manuel Lucasmiércoles 29 de junio de 2011
  27. 27. Iniciación al desarrollo PHP con el framework Codeigniter Rutas en CodeIgniter “http://www.url.com/controlador/método/parámetro1/ parámetro2/...” No es estricto, también: index.php?c=controlador&m=metodo Las URL se pueden redirigir desde application/config/routes.php También se puede añadir un sufijo a las URL (.html) José Manuel Lucasmiércoles 29 de junio de 2011
  28. 28. Iniciación al desarrollo PHP con el framework Codeigniter Rutas en CodeIgniter Por defecto, se llama al controlador Welcome http://url.com/index.php/controlador/metodo/var1/var2... Para quitarlo de la url se utiliza un archivo .htaccess RewriteEngine  on RewriteCond  $1  !^(index.php|images|robots.txt) RewriteRule  ^(.*)$  /index.php/$1  [L] http://url.com/controlador/metodo/var1/var2... José Manuel Lucasmiércoles 29 de junio de 2011
  29. 29. Iniciación al desarrollo PHP con el framework Codeigniter Estructura básica de un controlador class  Welcome  extends  CI_Controller  {   public  function  __construct() {     parent::__construct(); //código  que  se  repite  en  todos  los  métodos   }   public  function  index()   {     $this-­‐>load-­‐>view(welcome_message);  //carga  la  vista   } } José Manuel Lucasmiércoles 29 de junio de 2011
  30. 30. Iniciación al desarrollo PHP con el framework Codeigniter Pasando variables a las vistas class  Welcome  extends  CI_Controller  {   function  __construct() {     parent::__construct(); //código  que  se  repite  en  todos  los  métodos   }   function  index()   {     $this-­‐>load-­‐>view(welcome_message,  array( ‘message’  =>  ‘Bienvenido  a  CodeIgniter’ ));     } } José Manuel Lucasmiércoles 29 de junio de 2011
  31. 31. Iniciación al desarrollo PHP con el framework Codeigniter Pasando variables a las vistas <h1><?php  echo  $message  ?></h1> <p>The  page  you  are  looking  at  is  being  generated  dynamically  by   CodeIgniter.</p> <p>If  you  would  like  to  edit  this  page  youll  find  it  located  at:</p> <code>application/views/welcome_message.php</code> José Manuel Lucasmiércoles 29 de junio de 2011
  32. 32. Iniciación al desarrollo PHP con el framework Codeigniter Controladores Agrupan funcionalidades comunes class  Blog  extends  CI_Controller  {   function  list_posts($pag=1){   }  function  categories($cat=’’){  }  function  post($id){  } } José Manuel Lucasmiércoles 29 de junio de 2011
  33. 33. Iniciación al desarrollo PHP con el framework Codeigniter Controladores Agrupan funcionalidades comunes class  Blog  extends  CI_Controller  {   function  list_posts($pag=1){   }  function  categories($cat=’’){  }  function  post($id){  } } //http://url.com/blog/list_posts/3 //http://url.com/categories/html5 //http://url.com/post/45 José Manuel Lucasmiércoles 29 de junio de 2011
  34. 34. Iniciación al desarrollo PHP con el framework Codeigniter Controladores Trabajan con los datos, cargan modelos y vistas class  Blog  extends  CI_Controller  {   function  list_posts($offset=0){ $this-­‐>config-­‐>load(‘blog’); $this-­‐>load-­‐>model(‘blog_model’); $per_page  =  $this-­‐>config-­‐>item(‘per_page’); $data[‘posts’]  =  $this-­‐>blog_model-­‐>get_posts($offset,  $per_page); $this-­‐>load-­‐>view(‘blog/list_posts’,  $data);  //subdirectorio  blog   } } José Manuel Lucasmiércoles 29 de junio de 2011
  35. 35. Iniciación al desarrollo PHP con el framework Codeigniter Vistas Representan los datos <h1>Listado  de  posts</h1> <?php  foreach($posts  as  $post):  ?> <div  class=”post”> <h2><?php  echo  $post[‘title’]  ?></h2> <div  class=”post_content”> <?php  echo  $post[‘content’]  ?> </div> </div> <?php  endforeach  ?> José Manuel Lucasmiércoles 29 de junio de 2011
  36. 36. Iniciación al desarrollo PHP con el framework Codeigniter Controladores Trabajan con los datos, cargan modelos y vistas class  Blog  extends  CI_Controller  {   function  list_posts($offset=0){ $this-­‐>config-­‐>load(‘blog’); $this-­‐>load-­‐>model(‘blog_model’); $per_page  =  $this-­‐>config-­‐>item(‘per_page’); $data[‘posts’]  =  $this-­‐>blog_model-­‐>get_posts($offset,  $per_page); $this-­‐>load-­‐>view(‘blog/list_posts’,  $data);  //subdirectorio  blog   } } José Manuel Lucasmiércoles 29 de junio de 2011
  37. 37. Iniciación al desarrollo PHP con el framework Codeigniter Modelos Trabajan con la BBDD config/database.php: Introducir datos conexión 2 OPCIONES: config/autoload.php: Cargar la librería ʻdatabaseʼ En el controlador: $this->load->library(ʻdatabaseʼ); José Manuel Lucasmiércoles 29 de junio de 2011
  38. 38. Iniciación al desarrollo PHP con el framework Codeigniter Modelos class  Blog_model  extends  CI_Model  { function  __construct(){ parent::__construct(); } function  get_posts($offset=0,  $per_page=10){ $query  =  $this-­‐>db-­‐>get(‘posts’,  0,  10); //también  $this-­‐>db-­‐>query(‘SELECT  *  FROM  posts  LIMIT  10,  0’); return  $query-­‐>result_array(); } } José Manuel Lucasmiércoles 29 de junio de 2011
  39. 39. Iniciación al desarrollo PHP con el framework Codeigniter Modelos Soportan Active Record $query  =  $this-­‐>db-­‐>insert(‘authors’,  array( ‘name’  =>  ‘José  Manuel  Lucas’, ‘age’  =>  27, ‘position’  =>  ‘Web  Developer’ ));  //esta  consulta  sólo  devuelve  TRUE/FALSE $query  =  $this-­‐>db -­‐>join(‘authors’,  ‘authors.id  =  posts.author’) -­‐>select(‘posts.*,  authors.name’) -­‐>get_where(‘posts’,  array(        ‘id’  =>  6 ))-­‐>row_array();  //esto  devuelve  una  sola  fila José Manuel Lucasmiércoles 29 de junio de 2011
  40. 40. Iniciación al desarrollo PHP con el framework Codeigniter Modelos Devolver valores Varias filas -­‐>result()  //Array  de  objetos  con  los  resultados -­‐>result_array()  //Matriz  con  los  resultados Una fila -­‐>row()  //Objeto  con  los  resultados -­‐>row_array()  //Array  con  los  resultados José Manuel Lucasmiércoles 29 de junio de 2011
  41. 41. Iniciación al desarrollo PHP con el framework Codeigniter Modelos Métodos útiles $this-­‐>db-­‐>last_query()  //Última  consulta.  SELECT  *  FROM  authors... $this-­‐>db-­‐>insert_id()  //ID  del  último  objeto  insertado  en  BBDD $this-­‐>db-­‐>affected_rows()  //Filas  afectadas  en  última  operación $this-­‐>db-­‐>count_all(‘authors’)  //Filas  totales  en  una  tabla $query  =  $this-­‐>db-­‐>get(‘authors’); $query-­‐>num_rows();  //Número  de  resultados  del  último  select José Manuel Lucasmiércoles 29 de junio de 2011
  42. 42. Iniciación al desarrollo PHP con el framework Codeigniter Librerías y Helpers José Manuel Lucasmiércoles 29 de junio de 2011
  43. 43. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Funciones de utilidades (ayuda)... normalmente agrupadas Ejemplo: array, date, file, form, language, security, string, text, url Se cargan en el controlador $this-­‐>load-­‐>helper(‘security’);  //O  cargarlo  en  config/autoload.php do_hash(‘password’);  //SHA1  de  password do_hash(‘password’,  ‘md5’);  //MD5  de  password José Manuel Lucasmiércoles 29 de junio de 2011
  44. 44. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Se pueden utilizar en vistas, controladores, modelos, otros helpers, librerías... <p><?php  echo  anchor(blog/comments,  Click  Here)  ?></p> $this-­‐>db-­‐>insert(‘users’,  array( ‘name’  =>  ‘José  Manuel  Lucas’, ‘email’  =>  ‘josemanuel@jmlweb.es’, ‘password’  =>  do_hash(‘mi  contraseña’,  ‘md5’) )); José Manuel Lucasmiércoles 29 de junio de 2011
  45. 45. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Crear un helper 1)  application/helper/adwe_helper.php  //Sufijo  “helper”  necesario 2)  function  adwe_name(){      return  ‘Asociación  de  Desarrolladores  Web  de  España’;      } 3)  Cargar  el  helper  -­‐>  Autoload  o  $this-­‐>load-­‐>helper(‘adwe’); 3)  <h1><?php  echo  adwe_name()  ?></h1> José Manuel Lucasmiércoles 29 de junio de 2011
  46. 46. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Utilizar los recursos de CodeIgniter $CI  =&  get_instance();  //$CI  =  $this  //CodeIgniter  object $CI-­‐>load-­‐>helper(‘url’); $CI-­‐>load-­‐>model(‘users’); $users  =  $this-­‐>users-­‐>get_users(); José Manuel Lucasmiércoles 29 de junio de 2011
  47. 47. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Extendiendo los helpers system/helpers/date_helper.php application/helpers/MY_date_helper.php José Manuel Lucasmiércoles 29 de junio de 2011
  48. 48. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Extendiendo los helpers Añadiendo una función: function  spanish_date($strtime){ return  date(‘d/m/Y’,  $strtime); }  //añadimos  una  nueva  función $this-­‐>load-­‐>helper(‘date’); echo  spanish_date(time()); José Manuel Lucasmiércoles 29 de junio de 2011
  49. 49. Iniciación al desarrollo PHP con el framework Codeigniter Helpers Extendiendo los helpers Sobreescribiendo una función: function  unix_to_human($time  =  ‘’,  $seconds  =  FALSE){ return  date(‘d/m/Y  H:i:s’,  $strtime); } //sobreescribimos  la  función  “unix_to_human”  de  system/helpers/ date.php $this-­‐>load-­‐>helper(‘date’); echo  unix_to_human(time()); José Manuel Lucasmiércoles 29 de junio de 2011
  50. 50. Iniciación al desarrollo PHP con el framework Codeigniter Librerías (para los puretas: Bibliotecas) Subprogramas para facilitar el desarrollo Ejemplo: cart, database, email, form_validation, image_lib, pagination, session, upload... $this-­‐>load-­‐>library(‘pagination’); $config[base_url]  =  http://url.com/posts/; $config[total_rows]  =  200; $config[per_page]  =  20;   $this-­‐>pagination-­‐>initialize($config);   <div  class=”pagination”><?php  echo  $this-­‐>pagination-­‐>create_links()  ?> </div> José Manuel Lucasmiércoles 29 de junio de 2011
  51. 51. Iniciación al desarrollo PHP con el framework Codeigniter Librerías útiles Database -> Trabajo con BBDD Email -> Mails con bcc, adjuntos, codificación, html... Form_validation -> Validación del lado servidor Input -> Obtener $_POST saneados Image_lib -> Redimensionar y recortar imágenes Pagination -> Paginación de items Session -> Manejo de sesiones (OJO: No $_SESSION) Upload -> Subida de ficheros, con limitación de tamaño, tipo... José Manuel Lucasmiércoles 29 de junio de 2011
  52. 52. Iniciación al desarrollo PHP con el framework Codeigniter Algunos ejemplos Input $this-­‐>input-­‐>post(‘name’)  //$_POST[‘name’]; Image_lib $config[source_image]  =  /path/to/image/mypic.jpg; $config[maintain_ratio]  =  TRUE; $config[create_thumb]  =  TRUE; $config[width]  =  75; $config[height]  =  50; $this-­‐>load-­‐>library(‘image_lib’,  $config); $this-­‐>image_lib-­‐>resize();  //Crea  ‘my_pic_thumb.jpg’  con  tamaño   75x70 José Manuel Lucasmiércoles 29 de junio de 2011
  53. 53. Iniciación al desarrollo PHP con el framework Codeigniter Extender y crear librerías Funcionamiento análogo al de helpers. system/libraries/pagination.php application/libraries/MY_pagination.php Para usar los recursos: $CI  =&  get_instance(); José Manuel Lucasmiércoles 29 de junio de 2011
  54. 54. Iniciación al desarrollo PHP con el framework Codeigniter Extra José Manuel Lucasmiércoles 29 de junio de 2011
  55. 55. Iniciación al desarrollo PHP con el framework Codeigniter Whilewairport Networking en aeropuertos José Manuel Lucasmiércoles 29 de junio de 2011
  56. 56. Iniciación al desarrollo PHP con el framework Codeigniter Sym.posium Eventos científicos José Manuel Lucasmiércoles 29 de junio de 2011
  57. 57. Iniciación al desarrollo PHP con el framework Codeigniter ¡¡¡Se pueden desarrollar aplicaciones comerciales con CodeIgniter!!! YO: HTML + CSS (turbineCSS) + jQuery + CodeIgniter + MySQL + GIT José Manuel Lucasmiércoles 29 de junio de 2011
  58. 58. Iniciación al desarrollo PHP con el framework Codeigniter FuelCMS => Sistema híbrido CMS/Framework basado en CodeIgniter MY_Model => Mini-ORM Language_editor => Edición de idiomas multilenguaje José Manuel Lucasmiércoles 29 de junio de 2011
  59. 59. Iniciación al desarrollo PHP con el framework Codeigniter MUCHAS GRACIAS!!!! José Manuel Lucas twitter: @jmlweb blog: http://jmlweb.es work: www.digio.esmiércoles 29 de junio de 2011

×