taller mvc

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

Upload: betabeers

Post on 18-Dec-2014

497 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

PATRÓN ARQUITECTÓNICO

Plantillaque define la

estructura de un Sistema y las

normas de organización para

construir el Software

Patrón arquitectónico:

“MVC

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

Page 2: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

MODEL-VIEW-CONTROLLER

PatrónArquitectónico

que define la estructura de un

sistema, separando la lógica de

negocio de la interfaz de usuario

Modelo, vista, controlador:

“MVC

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

Page 3: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

De lo general a lo particular y de lo particular al detalle

¿Cómo funciona?

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

Page 4: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Generalidades...

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

Page 5: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Petición

VISTA

Contacta

RetornaMODELO

CONTROLADOR

Entrega

Muestra

1

23

4

5

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

Page 6: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Particularidades...

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

Page 7: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

PeticiónCONTROLADOR

Recibe las peticiones del usuarioHandler

Analiza y transforma la información recibidaHelper

Instancia al modelo

Modifica las propiedades del modelo

Llama al método correspondiente

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

Page 8: Taller MVC

ContactaCONTROLADOR

RetornaMODELO

Se conecta a la base de datos,

retornando al modelo, una

matriz con los datos obtenidos

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Capa de abstracción(core de la App)

Define las propiedades y los métodos del modelo

Los métodos harán uso de la capa de abstracción para acceder a la base de datos. No se conectan a ella directamente.

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

Page 9: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

VISTA

CONTROLADOR

Entrega

GUI

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

Lógica

Da formato / transforma la

información recibida

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

Page 10: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Detalles...

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

Page 11: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

MODELO

class Persona {

// propiedades public $nombre; public $apellido;

// Crear nueva persona public function set_persona() {

$data = array('nombre' => $this->nombre, 'apellido' => $this->apellido,);

$result = $db_abstract_layer->add('Persona', $data);

return $result; // True o False }}

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

Page 12: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Requerida por elModelo

class DBAbstractLayer {

// propiedades // ....

// conecta a la base de datos

// Agregar nuevo dato public function add($model, $data) {

$fields = array_keys($data);$values = array_values($data);// formatear $fields y $values

$sql = "INSERT INTO {$model} ($fields)

VALUES ($values)";

// ejecutar query// retornar mensaje

}}

Capa de abstracción

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

Page 13: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

CONTROLADOR

class PersonaController {

public function agregar() {// verifica, filtra y analiza la data recibida$data = helper_validar_data_persona();

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

// modificar propiedades del modelo$persona->nombre = $data['nombre'];$persona->apellido = $data['apellido'];

// llamar al método correspndiente$result = $persona->set_persona();

// enviar datos a la vista$vista = new PersonaView();$vista->mostrar_msg_nueva_persona($result);

}}

// handler

$controller = new PersonaController();

switch ($peticion) {case 'agregar-persona':

$controller->agregar();Break;

// ....}

function helper_validar_persona() {if(isset($_POST)) {

// filtrar datos...// return $datos_filtrados

}}

Handler

Helper

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

Page 14: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

VISTA

GUI

<!doctype html><head>

<title>Agregar Persona</title><!--

… -->

</head>

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

… -->

</body>

</html>

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

Page 15: Taller MVC

VISTA

Lógica class PersonaView {

public function mostrar_msg_nueva_persona($result) {// formateo los datos recibidosif($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 formateadaecho $html;

}}

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Page 16: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

¿Cómo organizar la estructura de la App?

Normas básicas para optimizar la estructura

Page 17: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Manteneruna estructura de

directorios limpia y con coherencia

lógica

“ [-] mi-aplicacion

[+] core

[-] modulo-a

[+] modelos

[+] vistas

[+] controladores

[-] modulo-b

[+] modelos

[+] vistas

[+] controladores

Page 18: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Un archivopor cada modelo.

El nombre del archivo, igual al

nombre del modelo

“ [-] mi-aplicacion

[+] core

[-] modulo-a

[-] modelos

persona.php

usuario.php

[+] vistas

[+] controladores

[-] modulo-b

[+] modelos

producto.php

[+] vistas

[+] controladores

Page 19: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Crearun controlador

para cada modelo“ [-] mi-aplicacion

[+] core

[-] modulo-a

[-] modelos

persona.php

usuario.php

[+] vistas

[-] controladores

persona.php

usuario.php

Page 20: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Crearuna vista para

cada modelo“ [-] mi-aplicacion

[+] core

[-] modulo-a

[-] modelos

persona.php

usuario.php

[-] vistas

persona.php

usuario.php

[-] controladores

persona.php

usuario.php

Page 21: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Colocararchivos estáticos

en un directorio independiente

“ [-] mi-aplicacion

[+] modulo-a

[-] static

[-] html

persona.html

usuario.html

plantilla_base.html

[+] css

[+] img

[+] js

Page 22: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Helpers yHandlers deben ir

en el directorio del módulo

correspondiente

“ [-] mi-aplicacion

[+] core

[-] modulo-a

[+] modelos

[+] vistas

[+] controladores

helpers.php

handler.php

Page 23: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Libreríasfunciones genéricas

y todo dato reutilizable,

siempre deben pertenecer al core

de la App

“ [-] mi-aplicacion

[+] core

[-] libs

PHPTemplate.php

DBConn.php

FormValidate.php

PHPAggregateFuncs.php

[+] orm

constantes.php

settings.php

Page 24: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

Pero por sobre todo,

NO TE OLVIDES DEUN PRINCIPIO

BÁSICO...

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

Page 25: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

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

Keep It Simple, S...!Keep It Simple, S...!

¡Gracias!

Page 26: Taller MVC

Betabeers Buenos Aires | 30 de Marzo de 2012

Entendiendo elpatrón arquitectónico

MVC @eugeniabahit

¡Soy un documento libre!

Descargame en:

http://taller-de-php.eugeniabahit.com

DISTRIBUIME, COPIAME Y MODIFICAME COMO QUIERAS

SE LIBRE COMOEN LIBERTAD

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