SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
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

La actualidad más candente

Modelo vistacontrolador
Modelo vistacontroladorModelo vistacontrolador
Modelo vistacontroladorRené Pilataxi
 
Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controladorCecy Villalta
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCIgnacio Aular Reyes
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controladorEsteban Ariza
 
Poo introduccion al patron mvc - renee morales calhua
Poo  introduccion al patron mvc - renee morales calhuaPoo  introduccion al patron mvc - renee morales calhua
Poo introduccion al patron mvc - renee morales calhuaRenee Morales Calhua
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)Senior Dev
 
Modelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasModelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasAlex Uhu Colli
 
Modelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_DiseñowebModelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_DiseñowebPierina G. Abad
 
Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)victorbalta
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1mariana
 
S8 arely medina_power_point
S8 arely medina_power_pointS8 arely medina_power_point
S8 arely medina_power_pointArely_Medina
 
Arquitectura Cliente-Servidor
Arquitectura Cliente-ServidorArquitectura Cliente-Servidor
Arquitectura Cliente-Servidorvinceq
 

La actualidad más candente (20)

Arquitectura MVC
Arquitectura MVCArquitectura MVC
Arquitectura MVC
 
MVC
MVCMVC
MVC
 
Modelo vistacontrolador
Modelo vistacontroladorModelo vistacontrolador
Modelo vistacontrolador
 
Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controlador
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista Controlador
 
MVC
MVCMVC
MVC
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Poo introduccion al patron mvc - renee morales calhua
Poo  introduccion al patron mvc - renee morales calhuaPoo  introduccion al patron mvc - renee morales calhua
Poo introduccion al patron mvc - renee morales calhua
 
Servicios web
Servicios webServicios web
Servicios web
 
Analisis del patron mvc
Analisis del patron mvcAnalisis del patron mvc
Analisis del patron mvc
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)
 
Mvc
MvcMvc
Mvc
 
Modelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasModelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capas
 
patron-mvc
 patron-mvc patron-mvc
patron-mvc
 
Modelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_DiseñowebModelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_Diseñoweb
 
Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
S8 arely medina_power_point
S8 arely medina_power_pointS8 arely medina_power_point
S8 arely medina_power_point
 
Arquitectura Cliente-Servidor
Arquitectura Cliente-ServidorArquitectura Cliente-Servidor
Arquitectura Cliente-Servidor
 

Destacado

Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Renny Batista
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
Fundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIFundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIRenny Batista
 
Html - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasHtml - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasRenny Batista
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EECarlos Gavidia-Calderon
 
Diseño adaptativo y responsive
Diseño adaptativo y responsiveDiseño adaptativo y responsive
Diseño adaptativo y responsiveRenny Batista
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de DatosRenny Batista
 
Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er deptLeonardo Moreno
 

Destacado (17)

Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
SERVLET BASICS
SERVLET BASICSSERVLET BASICS
SERVLET BASICS
 
Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Servlet
ServletServlet
Servlet
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Fundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema IIFundamentos de Sistema- >Tema II
Fundamentos de Sistema- >Tema II
 
05 java excepciones
05 java excepciones05 java excepciones
05 java excepciones
 
Html - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y ListasHtml - Tema 2: Enlaces, Imágenes y Listas
Html - Tema 2: Enlaces, Imágenes y Listas
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Diseño adaptativo y responsive
Diseño adaptativo y responsiveDiseño adaptativo y responsive
Diseño adaptativo y responsive
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de Datos
 
Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
 
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBCSEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
 
Java Web 00 - Contexto
Java Web 00 - ContextoJava Web 00 - Contexto
Java Web 00 - Contexto
 

Similar a Entendiendo el patrón arquitectónico MVC

Similar a Entendiendo el patrón arquitectónico MVC (20)

Ing. del software(arq. utilizada)
Ing. del software(arq. utilizada)Ing. del software(arq. utilizada)
Ing. del software(arq. utilizada)
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Mvc
MvcMvc
Mvc
 
Mvc
MvcMvc
Mvc
 
Modelo mvc
Modelo mvcModelo mvc
Modelo mvc
 
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
 
PPT-S08-MMIRANDA-2022-01.pptx
PPT-S08-MMIRANDA-2022-01.pptxPPT-S08-MMIRANDA-2022-01.pptx
PPT-S08-MMIRANDA-2022-01.pptx
 
Mvc
MvcMvc
Mvc
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Trabajo Final
Trabajo FinalTrabajo Final
Trabajo Final
 
Presentación MVC
Presentación MVCPresentación MVC
Presentación MVC
 
patron de diseño MVVMo.pptx
patron de diseño MVVMo.pptxpatron de diseño MVVMo.pptx
patron de diseño MVVMo.pptx
 
Unidad_02_02.pdf
Unidad_02_02.pdfUnidad_02_02.pdf
Unidad_02_02.pdf
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...
 
Presentación1
Presentación1Presentación1
Presentación1
 
mvc.pptx
mvc.pptxmvc.pptx
mvc.pptx
 
Articulo MVC
Articulo MVC Articulo MVC
Articulo MVC
 
Programacion 3 mvc
Programacion 3 mvcProgramacion 3 mvc
Programacion 3 mvc
 
Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001
 

Más de betabeers

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

Más de betabeers (20)

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

Entendiendo el patrón arquitectónico 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