Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Taller MVC

Betabeers
April 01, 2012

Taller MVC

Ponente Eugenia Bahit

Betabeers

April 01, 2012
Tweet

More Decks by Betabeers

Other Decks in Education

Transcript

  1. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit PATRÓN ARQUITECTÓNICO Plantilla que define la estructura de un Sistema y las normas de organización para construir el Software Patrón arquitectónico: “ MVC Universidad Nacional de Avellaneda | www.undav.edu.ar
  2. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit MODEL-VIEW-CONTROLLER Patrón Arquitectónico que define la estructura de un sistema, separando la lógica de negocio de la interfaz de usuario Modelo, vista, controlador: “ MVC Universidad Nacional de Avellaneda | www.undav.edu.ar
  3. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit De lo general a lo particular y de lo particular al detalle ¿Cómo funciona? Universidad Nacional de Avellaneda | www.undav.edu.ar
  4. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Generalidades... Universidad Nacional de Avellaneda | www.undav.edu.ar
  5. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Petición VISTA Contacta Retorna MODELO CONTROLADOR Entrega Muestra 1 2 3 4 5 Universidad Nacional de Avellaneda | www.undav.edu.ar
  6. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Particularidades... Universidad Nacional de Avellaneda | www.undav.edu.ar
  7. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Petición CONTROLADOR Recibe las peticiones del usuario Handler Analiza y transforma la información recibida Helper Instancia al modelo Modifica las propiedades del modelo Llama al método correspondiente Universidad Nacional de Avellaneda | www.undav.edu.ar
  8. Contacta CONTROLADOR Retorna MODELO Se conecta a la base de

    datos, retornando al modelo, una matriz con los datos obtenidos Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo el patrón arquitectónico MVC @eugeniabahit Capa de abstracción (core de la App) Define las propiedades y los métodos del modelo Los métodos harán uso de la capa de abstracción para acceder a la base de datos. No se conectan a ella directamente. Universidad Nacional de Avellaneda | www.undav.edu.ar
  9. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit VISTA CONTROLADOR Entrega GUI Renderiza la información formateada en la GUI y la muestra al usuario Lógica Da formato / transforma la información recibida Universidad Nacional de Avellaneda | www.undav.edu.ar
  10. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Detalles... Universidad Nacional de Avellaneda | www.undav.edu.ar
  11. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit MODELO class Persona { // propiedades public $nombre; public $apellido; // Crear nueva persona public function set_persona() { $data = array('nombre' => $this->nombre, 'apellido' => $this->apellido,); $result = $db_abstract_layer->add('Persona', $data); return $result; // True o False } } Universidad Nacional de Avellaneda | www.undav.edu.ar
  12. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Requerida por el Modelo class DBAbstractLayer { // propiedades // .... // conecta a la base de datos // Agregar nuevo dato public function add($model, $data) { $fields = array_keys($data); $values = array_values($data); // formatear $fields y $values $sql = "INSERT INTO {$model} ($fields) VALUES ($values)"; // ejecutar query // retornar mensaje } } Capa de abstracción Universidad Nacional de Avellaneda | www.undav.edu.ar
  13. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit CONTROLADOR class PersonaController { public function agregar() { // verifica, filtra y analiza la data recibida $data = helper_validar_data_persona(); // instanciar al modelo $persona = new Persona(); // modificar propiedades del modelo $persona->nombre = $data['nombre']; $persona->apellido = $data['apellido']; // llamar al método correspndiente $result = $persona->set_persona(); // enviar datos a la vista $vista = new PersonaView(); $vista->mostrar_msg_nueva_persona($result); } } // handler $controller = new PersonaController(); switch ($peticion) { case 'agregar-persona': $controller->agregar(); Break; // .... } function helper_validar_persona() { if(isset($_POST)) { // filtrar datos... // return $datos_filtrados } } Handler Helper Universidad Nacional de Avellaneda | www.undav.edu.ar
  14. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit VISTA GUI <!doctype html> <head> <title>Agregar Persona</title> <!-- … --> </head> <body> <h1>Agregar Persona</h1> <p class='system_msg'>[[MENSAJE]]</p> <!-- … --> </body> </html> Universidad Nacional de Avellaneda | www.undav.edu.ar
  15. VISTA Lógica class PersonaView { public function mostrar_msg_nueva_persona($result) { //

    formateo los datos recibidos if($result === True) { $mensaje = 'La persona ha sido agregada'; } else { $mensaje = 'Se ha producido un error'; } // traigo la GUI $gui = file_get_contents('persona.html'); // Hago un render de la GUI $html = str_replace('[[MENSAJE]]', $mensaje, $gui); // muestro la data formateada echo $html; } } Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar
  16. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar ¿Cómo organizar la estructura de la App? Normas básicas para optimizar la estructura
  17. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Mantener una estructura de directorios limpia y con coherencia lógica “ [-] mi-aplicacion [+] core [-] modulo-a [+] modelos [+] vistas [+] controladores [-] modulo-b [+] modelos [+] vistas [+] controladores
  18. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Un archivo por cada modelo. El nombre del archivo, igual al nombre del modelo “ [-] mi-aplicacion [+] core [-] modulo-a [-] modelos persona.php usuario.php [+] vistas [+] controladores [-] modulo-b [+] modelos producto.php [+] vistas [+] controladores
  19. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Crear un controlador para cada modelo “ [-] mi-aplicacion [+] core [-] modulo-a [-] modelos persona.php usuario.php [+] vistas [-] controladores persona.php usuario.php
  20. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Crear una vista para cada modelo “ [-] mi-aplicacion [+] core [-] modulo-a [-] modelos persona.php usuario.php [-] vistas persona.php usuario.php [-] controladores persona.php usuario.php
  21. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Colocar archivos estáticos en un directorio independiente “ [-] mi-aplicacion [+] modulo-a [-] static [-] html persona.html usuario.html plantilla_base.html [+] css [+] img [+] js
  22. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Helpers y Handlers deben ir en el directorio del módulo correspondiente “ [-] mi-aplicacion [+] core [-] modulo-a [+] modelos [+] vistas [+] controladores helpers.php handler.php
  23. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Librerías funciones genéricas y todo dato reutilizable, siempre deben pertenecer al core de la App “ [-] mi-aplicacion [+] core [-] libs PHPTemplate.php DBConn.php FormValidate.php PHPAggregateFuncs.php [+] orm constantes.php settings.php
  24. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Pero por sobre todo, NO TE OLVIDES DE UN PRINCIPIO BÁSICO... Universidad Nacional de Avellaneda | www.undav.edu.ar
  25. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit Universidad Nacional de Avellaneda | www.undav.edu.ar Keep It Simple, S...! Keep It Simple, S...! ¡Gracias!
  26. Betabeers Buenos Aires | 30 de Marzo de 2012 Entendiendo

    el patrón arquitectónico MVC @eugeniabahit ¡Soy un documento libre! Descargame en: http://taller-de-php.eugeniabahit.com DISTRIBUIME, COPIAME Y MODIFICAME COMO QUIERAS SE LIBRE COMO EN LIBERTAD Universidad Nacional de Avellaneda | www.undav.edu.ar