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

Taller MVC

Avatar for Betabeers Betabeers
April 01, 2012

Taller MVC

Ponente Eugenia Bahit

Avatar for Betabeers

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