SlideShare una empresa de Scribd logo
Universidad Nacional de Avellaneda | www.undav.edu.ar     Betabeers Buenos Aires | 30 de Marzo de 2012



Patrón arquitectónico:




           “       Plantilla
              que define la
          estructura de un



                                                        MVC
              Sistema y las
                normas de
        organización para
               construir el
                   Software                             PATRÓN ARQUITECTÓNICO


             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar     Betabeers Buenos Aires | 30 de Marzo de 2012



Modelo, vista, controlador:




           “        Patrón
            Arquitectónico
              que define la



                                                        MVC
          estructura de un
       sistema, separando
               la lógica de
             negocio de la
       interfaz de usuario                              MODEL-VIEW-CONTROLLER


             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




       ¿Cómo funciona?
               De lo general a lo particular y de lo particular al detalle



             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




                     Generalidades...

             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar               Betabeers Buenos Aires | 30 de Marzo de 2012


                                                1
                                            Petición                               Contacta
                                                               CONTROLADOR



                                                                           3                       2
              5                                                                         MODELO
                            Muestra                                    Retorna


                                                        Entrega
                     VISTA

                                                           4

             Entendiendo el
             patrón arquitectónico

             MVC                                                                         @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




              Particularidades...

             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar                   Betabeers Buenos Aires | 30 de Marzo de 2012



                           Petición
                                                        CONTROLADOR



                                                           Handler       Recibe las peticiones del usuario


                                                                         Analiza y transforma la información
                                                           Helper        recibida

                                                                     Instancia al modelo


                                                             Modifica las propiedades del modelo


                                                              Llama al método correspondiente




             Entendiendo el
             patrón arquitectónico

             MVC                                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar            Betabeers Buenos Aires | 30 de Marzo de 2012


                                               Contacta
        CONTROLADOR
                                                                             Capa de abstracción
                                                                               (core de la App)

                                                                          Se conecta a la
                                                                           base de datos,
                                                                            retornando al
                                                                             modelo, una
                                                        MODELO              matriz con los
                           Retorna                                        datos obtenidos




            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.




             Entendiendo el
             patrón arquitectónico

             MVC                                                                      @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar       Betabeers Buenos Aires | 30 de Marzo de 2012




                       Lógica                                             CONTROLADOR
                   Da formato /
                  transforma la
              información recibida

                                                        VISTA
                                                                          Entrega



                         GUI




             Renderiza la información formateada en la GUI y la muestra al usuario




             Entendiendo el
             patrón arquitectónico

             MVC                                                                 @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




                                           Detalles...

             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar               Betabeers Buenos Aires | 30 de Marzo de 2012




                                           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
                                      }
                               }




             Entendiendo el
             patrón arquitectónico

             MVC                                                                         @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar              Betabeers Buenos Aires | 30 de Marzo de 2012




                      Requerida por el                  class DBAbstractLayer {
                         Modelo
                                                            // propiedades
                                                            // ....
                                                            // conecta a la base de datos
                 Capa de abstracción
                                                            // 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
                                                            }
                                                        }




             Entendiendo el
             patrón arquitectónico

             MVC                                                                        @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar                 Betabeers Buenos Aires | 30 de Marzo de 2012



             Handler                                        CONTROLADOR
    // handler

    $controller = new PersonaController();              class PersonaController {
    switch ($peticion) {
          case 'agregar-persona':                           public function agregar() {
                $controller->agregar();
                Break;                                          // verifica, filtra y analiza la data recibida
          // ....                                               $data = helper_validar_data_persona();
    }

                                                                // instanciar al modelo
                                                                $persona = new Persona();

                                                                // modificar propiedades del modelo
              Helper                                            $persona->nombre = $data['nombre'];
                                                                $persona->apellido = $data['apellido'];
    function helper_validar_persona() {
          if(isset($_POST)) {                                   // llamar al método correspndiente
                // filtrar datos...                             $result = $persona->set_persona();
                // return $datos_filtrados
          }
    }                                                           // enviar datos a la vista
                                                                $vista = new PersonaView();
                                                                $vista->mostrar_msg_nueva_persona($result);
                                                            }
                                                        }



             Entendiendo el
             patrón arquitectónico

             MVC                                                                            @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar             Betabeers Buenos Aires | 30 de Marzo de 2012




                                                        <!doctype html>
                                                        <head>
                    VISTA                                   <title>Agregar Persona</title>
                                                            <!--
                                                                 …
                                                            -->
                                         GUI            </head>

                                                        <body>
                                                            <h1>Agregar Persona</h1>
                                                            <p class='system_msg'>[[MENSAJE]]</p>
                                                            <!--
                                                                 …
                                                            -->
                                                        </body>

                                                        </html>




             Entendiendo el
             patrón arquitectónico

             MVC                                                                       @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar                     Betabeers Buenos Aires | 30 de Marzo de 2012




                  Lógica                            class PersonaView {

                                                        public function mostrar_msg_nueva_persona($result) {
                   VISTA                                    // 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;
                                                        }
                                                    }




             Entendiendo el
             patrón arquitectónico

             MVC                                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




              ¿Cómo organizar la
             estructura de la App?
                            Normas básicas para optimizar la estructura


             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar    Betabeers Buenos Aires | 30 de Marzo de 2012




             “    Mantener
          una estructura de
        directorios limpia y
            con coherencia
                                                        [-] mi-aplicacion
                                                            [+] core
                                                            [-] modulo-a
                                                                 [+] modelos
                                                                 [+] vistas
                                                                 [+] controladores
                      lógica                                [-] modulo-b
                                                                 [+] modelos
                                                                 [+] vistas
                                                                 [+] controladores




             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar    Betabeers Buenos Aires | 30 de Marzo de 2012




             “  Un archivo
          por cada modelo.
             El nombre del
           archivo, igual al
                                                        [-] mi-aplicacion
                                                            [+] core
                                                            [-] modulo-a
                                                                 [-] modelos
                                                                      persona.php
                                                                      usuario.php
         nombre del modelo                                       [+] vistas
                                                                 [+] controladores
                                                            [-] modulo-b
                                                                 [+] modelos
                                                                      producto.php
                                                                 [+] vistas
                                                                 [+] controladores




             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar    Betabeers Buenos Aires | 30 de Marzo de 2012




             “          Crear
               un controlador
            para cada modelo
                                                        [-] mi-aplicacion
                                                            [+] core
                                                            [-] modulo-a
                                                                 [-] modelos
                                                                      persona.php
                                                                      usuario.php
                                                                 [+] vistas
                                                                 [-] controladores
                                                                      persona.php
                                                                      usuario.php




             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar    Betabeers Buenos Aires | 30 de Marzo de 2012




             “                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




             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar    Betabeers Buenos Aires | 30 de Marzo de 2012




             “        Colocar
            archivos estáticos
              en un directorio
                independiente
                                                        [-] mi-aplicacion
                                                            [+] modulo-a
                                                            [-] static
                                                                 [-] html
                                                                      persona.html
                                                                      usuario.html
                                                                      plantilla_base.html
                                                                 [+] css
                                                                 [+] img
                                                                 [+] js




             Entendiendo el
             patrón arquitectónico

             MVC                                                              @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar    Betabeers Buenos Aires | 30 de Marzo de 2012




             “      Helpers y
           Handlers deben ir
          en el directorio del
                      módulo
                                                        [-] mi-aplicacion
                                                            [+] core
                                                            [-] modulo-a
                                                                 [+] modelos
                                                                 [+] vistas
                                                                 [+] controladores
             correspondiente                                     helpers.php
                                                                 handler.php




             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Betabeers Buenos Aires | 30 de Marzo de 2012




             “
Universidad Nacional de Avellaneda | www.undav.edu.ar




                   Librerías
       funciones genéricas                              [-] mi-aplicacion
                 y todo dato                               [+] core
                                                                [-] libs
                reutilizable,                                        PHPTemplate.php
             siempre deben                                           DBConn.php
         pertenecer al core                                          FormValidate.php
                                                                     PHPAggregateFuncs.php
                   de la App                                    [+] orm
                                                                constantes.php
                                                                settings.php




             Entendiendo el
             patrón arquitectónico

             MVC                                                               @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




                          Pero por sobre todo,

                    NO TE OLVIDES DE
                     UN PRINCIPIO
                        BÁSICO...
             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar   Betabeers Buenos Aires | 30 de Marzo de 2012




             Keep It Simple, S...!

                                     ¡Gracias!
             Entendiendo el
             patrón arquitectónico

             MVC                                                             @eugeniabahit
Universidad Nacional de Avellaneda | www.undav.edu.ar             Betabeers Buenos Aires | 30 de Marzo de 2012



               ¡Soy un documento libre!
                                                        Descargame en:
                          http://taller-de-php.eugeniabahit.com
                    DISTRIBUIME, COPIAME Y MODIFICAME COMO QUIERAS


                SE LIBRE COMO
                 EN LIBERTAD
             Entendiendo el
             patrón arquitectónico

             MVC                                                                       @eugeniabahit

Más contenido relacionado

PPTX
MODELO VISTA CONTROLADOR
ODP
Arquitectura Mvc
PPTX
El patrón MVC
PPT
Patrón MVC
DOCX
Modelo vista controlador
PDF
Modelo vista controlador
PPTX
Modelo vista controlador
PDF
MODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR
Arquitectura Mvc
El patrón MVC
Patrón MVC
Modelo vista controlador
Modelo vista controlador
Modelo vista controlador
MODELO VISTA CONTROLADOR EN PHP

La actualidad más candente (20)

PPT
PPTX
Modelo vistacontrolador
PDF
Modelo, vista, controlador
PDF
Calculadora Gráfica Java implementando el Patrón MVC
PPTX
Patron de Desarrollo Modelo Vista Controlador
DOCX
Modelo vista controlador
PPTX
Poo introduccion al patron mvc - renee morales calhua
PPTX
Servicios web
PDF
Analisis del patron mvc
PPTX
MVC - (Spanish)
DOCX
Modelo vista controlador vas Programacion por n capas
PPTX
patron-mvc
PDF
Modelo vista controlador #ihcpfgigs_Diseñoweb
PPTX
Model View Controller (MVC)
PPSX
Aplicaciones en capas1
PPTX
S8 arely medina_power_point
PDF
Arquitectura Cliente-Servidor
Modelo vistacontrolador
Modelo, vista, controlador
Calculadora Gráfica Java implementando el Patrón MVC
Patron de Desarrollo Modelo Vista Controlador
Modelo vista controlador
Poo introduccion al patron mvc - renee morales calhua
Servicios web
Analisis del patron mvc
MVC - (Spanish)
Modelo vista controlador vas Programacion por n capas
patron-mvc
Modelo vista controlador #ihcpfgigs_Diseñoweb
Model View Controller (MVC)
Aplicaciones en capas1
S8 arely medina_power_point
Arquitectura Cliente-Servidor
Publicidad

Destacado (17)

PDF
Presentación Spring Boot en Autentia
PDF
SERVLET BASICS
PDF
Java - Sintaxis Básica 2015
PDF
03 java poo_parte_2
PDF
Java colecciones
PDF
Sistemas Operativos
PPTX
Servlet
PDF
Programación Orientada a Objetos en Java - Parte I 2015
PDF
Fundamentos de Sistema- >Tema II
PDF
05 java excepciones
PDF
Html - Tema 2: Enlaces, Imágenes y Listas
PPTX
Arquitectura y diseño de aplicaciones Java EE
PDF
Diseño adaptativo y responsive
PDF
Diagramas de Flujos de Datos
PPT
Programación web 1er dept
PDF
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
PDF
Java Web 00 - Contexto
Presentación Spring Boot en Autentia
SERVLET BASICS
Java - Sintaxis Básica 2015
03 java poo_parte_2
Java colecciones
Sistemas Operativos
Servlet
Programación Orientada a Objetos en Java - Parte I 2015
Fundamentos de Sistema- >Tema II
05 java excepciones
Html - Tema 2: Enlaces, Imágenes y Listas
Arquitectura y diseño de aplicaciones Java EE
Diseño adaptativo y responsive
Diagramas de Flujos de Datos
Programación web 1er dept
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
Java Web 00 - Contexto
Publicidad

Similar a Taller MVC (20)

PDF
Arquitectura de software
PDF
patrón MVC.pdf
PDF
Articulo MVC
PPTX
ASP.NET MVC (2011)
PPTX
modelo MVC.pptx
PDF
Frameworks MVC para desarrollo de UITES
PPTX
Patron y Arquitectura para las grandes empresas
PDF
PPT Crear tablas y utilizar marquesinas.pdf
PDF
19.1 Concepto - Modelo Vista Controlador
PPTX
3-Unidad 1. Arquitectura de Diseño
PPT
Curso Fundeweb2 para java desde cero a experto.ppt
PPTX
2-Unidad 1. Arquitectura de Diseño
DOC
Tutorial manos a la obra con Yupp PHP Framework
PPTX
S6-PD2-Modelo Vista Controlador
PPTX
2-Unidad 1: Arquitectura de Diseño-1.1 MVC-Desarrollo
PDF
Clase 10 mvc
PPTX
Modelo vistacontrolador
PDF
Business Logic 2012
Arquitectura de software
patrón MVC.pdf
Articulo MVC
ASP.NET MVC (2011)
modelo MVC.pptx
Frameworks MVC para desarrollo de UITES
Patron y Arquitectura para las grandes empresas
PPT Crear tablas y utilizar marquesinas.pdf
19.1 Concepto - Modelo Vista Controlador
3-Unidad 1. Arquitectura de Diseño
Curso Fundeweb2 para java desde cero a experto.ppt
2-Unidad 1. Arquitectura de Diseño
Tutorial manos a la obra con Yupp PHP Framework
S6-PD2-Modelo Vista Controlador
2-Unidad 1: Arquitectura de Diseño-1.1 MVC-Desarrollo
Clase 10 mvc
Modelo vistacontrolador
Business Logic 2012

Más de betabeers (20)

PPSX
IONIC, el framework para crear aplicaciones híbridas multiplataforma
PDF
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
PPTX
Blockchain: la revolución industrial de internet - Oscar Lage
PDF
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
PDF
Desarrollo web en Nodejs con Pillars por Chelo Quilón
PDF
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
PDF
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
PDF
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
PPTX
Introducción a scrum - Rodrigo Corral (Plain Concepts)
PPTX
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
PPTX
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
PDF
Elemental, querido Watson - Caso de Uso
PDF
Seguridad en tu startup
PPTX
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
PDF
Buenas prácticas para la optimización web
PDF
La magia de Scrum
PDF
Programador++ por @wottam
PPTX
RaspberryPi: Tu dispositivo para IoT
PDF
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
PDF
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
IONIC, el framework para crear aplicaciones híbridas multiplataforma
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Blockchain: la revolución industrial de internet - Oscar Lage
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Desarrollo web en Nodejs con Pillars por Chelo Quilón
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Elemental, querido Watson - Caso de Uso
Seguridad en tu startup
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Buenas prácticas para la optimización web
La magia de Scrum
Programador++ por @wottam
RaspberryPi: Tu dispositivo para IoT
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015

Taller MVC

  • 1. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Patrón arquitectónico: “ Plantilla que define la estructura de un MVC Sistema y las normas de organización para construir el Software PATRÓN ARQUITECTÓNICO Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 2. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Modelo, vista, controlador: “ Patrón Arquitectónico que define la MVC estructura de un sistema, separando la lógica de negocio de la interfaz de usuario MODEL-VIEW-CONTROLLER Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 3. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 ¿Cómo funciona? De lo general a lo particular y de lo particular al detalle Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 4. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Generalidades... Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 5. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 1 Petición Contacta CONTROLADOR 3 2 5 MODELO Muestra Retorna Entrega VISTA 4 Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 6. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Particularidades... Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 7. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Petición CONTROLADOR Handler Recibe las peticiones del usuario Analiza y transforma la información Helper recibida Instancia al modelo Modifica las propiedades del modelo Llama al método correspondiente Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 8. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Contacta CONTROLADOR Capa de abstracción (core de la App) Se conecta a la base de datos, retornando al modelo, una MODELO matriz con los Retorna datos obtenidos 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. Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 9. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Lógica CONTROLADOR Da formato / transforma la información recibida VISTA Entrega GUI Renderiza la información formateada en la GUI y la muestra al usuario Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 10. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Detalles... Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 11. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 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 } } Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 12. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Requerida por el class DBAbstractLayer { Modelo // propiedades // .... // conecta a la base de datos Capa de abstracción // 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 } } Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 13. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Handler CONTROLADOR // handler $controller = new PersonaController(); class PersonaController { switch ($peticion) { case 'agregar-persona': public function agregar() { $controller->agregar(); Break; // verifica, filtra y analiza la data recibida // .... $data = helper_validar_data_persona(); } // instanciar al modelo $persona = new Persona(); // modificar propiedades del modelo Helper $persona->nombre = $data['nombre']; $persona->apellido = $data['apellido']; function helper_validar_persona() { if(isset($_POST)) { // llamar al método correspndiente // filtrar datos... $result = $persona->set_persona(); // return $datos_filtrados } } // enviar datos a la vista $vista = new PersonaView(); $vista->mostrar_msg_nueva_persona($result); } } Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 14. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 <!doctype html> <head> VISTA <title>Agregar Persona</title> <!-- … --> GUI </head> <body> <h1>Agregar Persona</h1> <p class='system_msg'>[[MENSAJE]]</p> <!-- … --> </body> </html> Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 15. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Lógica class PersonaView { public function mostrar_msg_nueva_persona($result) { VISTA // 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; } } Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 16. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 ¿Cómo organizar la estructura de la App? Normas básicas para optimizar la estructura Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 17. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 “ Mantener una estructura de directorios limpia y con coherencia [-] mi-aplicacion [+] core [-] modulo-a [+] modelos [+] vistas [+] controladores lógica [-] modulo-b [+] modelos [+] vistas [+] controladores Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 18. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 “ Un archivo por cada modelo. El nombre del archivo, igual al [-] mi-aplicacion [+] core [-] modulo-a [-] modelos persona.php usuario.php nombre del modelo [+] vistas [+] controladores [-] modulo-b [+] modelos producto.php [+] vistas [+] controladores Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 19. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 “ Crear un controlador para cada modelo [-] mi-aplicacion [+] core [-] modulo-a [-] modelos persona.php usuario.php [+] vistas [-] controladores persona.php usuario.php Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 20. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 “ 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 Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 21. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 “ Colocar archivos estáticos en un directorio independiente [-] mi-aplicacion [+] modulo-a [-] static [-] html persona.html usuario.html plantilla_base.html [+] css [+] img [+] js Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 22. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 “ Helpers y Handlers deben ir en el directorio del módulo [-] mi-aplicacion [+] core [-] modulo-a [+] modelos [+] vistas [+] controladores correspondiente helpers.php handler.php Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 23. Betabeers Buenos Aires | 30 de Marzo de 2012 “ Universidad Nacional de Avellaneda | www.undav.edu.ar Librerías funciones genéricas [-] mi-aplicacion y todo dato [+] core [-] libs reutilizable, PHPTemplate.php siempre deben DBConn.php pertenecer al core FormValidate.php PHPAggregateFuncs.php de la App [+] orm constantes.php settings.php Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 24. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Pero por sobre todo, NO TE OLVIDES DE UN PRINCIPIO BÁSICO... Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 25. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 Keep It Simple, S...! ¡Gracias! Entendiendo el patrón arquitectónico MVC @eugeniabahit
  • 26. Universidad Nacional de Avellaneda | www.undav.edu.ar Betabeers Buenos Aires | 30 de Marzo de 2012 ¡Soy un documento libre! Descargame en: http://taller-de-php.eugeniabahit.com DISTRIBUIME, COPIAME Y MODIFICAME COMO QUIERAS SE LIBRE COMO EN LIBERTAD Entendiendo el patrón arquitectónico MVC @eugeniabahit