MODELO VISTA CONTROLADOR EN PHP

32
Aplicación del patrón arquitectónico Modelo Vista Controlador en programación con PHP Noveno Congreso Nacional de Software Libre San Fernando de Apure, Venezuela 2013 Gabriel Carrillo M V C

description

Esta propuesta se basa en programación orientada a objeto y en el patrón arquitectónico Modelo Vista Controlador (MVC). La aplicación sistemática del patrón MVC facilita el desarrollo de software de calidad, entendido como aquel que tiene atributos de usabilidad, confiabilidad, robustez y funcionalidad.

Transcript of MODELO VISTA CONTROLADOR EN PHP

Page 1: MODELO VISTA CONTROLADOR EN PHP

Aplicación del patrón arquitectónico Modelo Vista Controlador en programación con PHP

Noveno Congreso Nacional de Software Libre

San Fernando de Apure, Venezuela 2013

Gabriel Carrillo

M V

C

Page 2: MODELO VISTA CONTROLADOR EN PHP

Introducción

Esta investigación tiene el propósito de presentar unametodología para el desarrollo de aplicaciones Web enlenguaje PHP.

El patrón arquitectónico Modelo Vista Controlador

Gabriel Carrillo - Venezuela 2013

lenguaje PHP.

La metodología propuesta se basa en programaciónorientada a objeto y en el patrón arquitectónico Modelo VistaControlador (MVC)

La aplicación sistemática del patrón MVC facilita el desarrollode software de calidad, entendido como aquel que tieneatributos de usabilidad, confiabilidad, robustez yfuncionalidad.

Page 3: MODELO VISTA CONTROLADOR EN PHP

El patrón arquitectónico Modelo Vista Controlador (MVC) se utiliza para producir software reusable y flexible. ¿Qué es?

El patrón MVC separa la lógica, datos y presentación en programas de aplicación.

El patrón arquitectónico Modelo Vista Controlador

Gabriel Carrillo - Venezuela 2013

La aplicación del MVC ayuda a mejorar la calidad del software.

¿ Para qué ?

Facilita la organización de equipos de personas para desarrollar aplicar sistemas de software.

en programas de aplicación.

Page 4: MODELO VISTA CONTROLADOR EN PHP

Tecnología Web

El patrón arquitectónico Modelo Vista Controlador

Servidor WebInternetNavegador

Apache

PHP, JSPMySQL

Petición

Gabriel Carrillo - Venezuela 2013

PHP, JSPMySQL

PostgreSQLMozilla Firefox Respuesta

CLIENTE SERVIDOR

Page 5: MODELO VISTA CONTROLADOR EN PHP

¿ Cómo?

El patrón arquitectónico Modelo Vista Controlador

El patrón Modelo Vista Controlador propone separar las

funciones de un programa en tres grupos.

Gabriel Carrillo - Venezuela 2013

Page 6: MODELO VISTA CONTROLADOR EN PHP

La separación de la lógica, datos y presentación significa que los códigos encargados de realizar esas funciones están en archivos físicos separados.

ControladorSe encarga de controlar la lógica principal de

la aplicación. Controla el flujo de la ejecución

del código.

El patrón arquitectónico Modelo Vista Controlador

Gabriel Carrillo - Venezuela 2013

ModeloSe encarga definir la lógica del negocio.

Incluye código para manipular (insertar,

modificar, eliminar, leer) datos de tablas.

Vista Se encarga de producir la salida. Se utiliza

básicamente código HTML y hojas de estilo.

Page 7: MODELO VISTA CONTROLADOR EN PHP

Directorio de la aplicación

Estructura de los directorios

Respaldo de base de datos

Clases

Controladores

Hojas de estilo

Gabriel Carrillo - Venezuela 2013

Modelos

Vistas

Hojas de estilo

Archivos a incluir: imágenes, textos.

Bibliotecas de terceros (pdf, etc).

Punto de entrada a la aplicación

Page 8: MODELO VISTA CONTROLADOR EN PHP

El Patrón Arquitectónico Modelo Vista Controlador

Para efectos prácticos, el controlador tiene dos partes: Un controlador frontal y el

controlador propio de la acción o módulo que se desea ejecutar. En esta metodología,

el controlador frontal está en el archivo index.php

Gabriel Carrillo - Venezuela 2013

Page 9: MODELO VISTA CONTROLADOR EN PHP

Flujo de control

1. Un usuario envía una petición al

controlador frontal (index.php).

El flujo de control en una aplicación se realiza de acuerdo con los pasos siguientes:

Gabriel Carrillo - Venezuela 2013

2. El controlador frontal selecciona el

controlador y acción de la

solicitud.

Page 10: MODELO VISTA CONTROLADOR EN PHP

Flujo de control

3. El controlador solicita datos al

modelo.

4. El modelo devuelve los

resultados al controlador.

El flujo de control en una aplicación se realiza de acuerdo con los pasos siguientes:

Gabriel Carrillo - Venezuela 2013

resultados al controlador.

5. El controlador pasa los datos a

la vista. El navegador

presenta la respuesta al

usuario.

Page 11: MODELO VISTA CONTROLADOR EN PHP

<?php

/**

* Archivo : index.php

*/

// Leer controlador. Si no hay controlador definido,

// valor por defecto es Sesion.

if(! empty($_GET['cnt'])) {

$controllerName = $_GET['cnt'];

} else {

$controllerName = "Sesion";

}

$controllerPath = 'controladores/'. $controllerName . '.php';

Archivo index.php

Es el único punto de

entrada a la aplicación

El controlador frontal

Gabriel Carrillo - Venezuela 2013

// Leer la accion. Si no hay accion definida, tomar inicio.

if(! empty($_GET['act'])) {

$actionName = $_GET['act'];

} else {

$actionName = "inicio";

}

// Incluir el archivo del controlador

require $controllerPath;

// Crear el objeto y llamar la accion

$controller = new $controllerName;

$controller->$actionName();

?>

entrada a la aplicación

Page 12: MODELO VISTA CONTROLADOR EN PHP

El Patrón Arquitectónico Modelo Vista Controlador

El flujo de ejecución en el punto de entrada a la aplicación se muestra en la

figura siguiente:

Petición Controlador

Controlador c1

Acción A1

Controlador c2

Acción A2

Gabriel Carrillo - Venezuela 2013

Petición Controlador

frontalAcción A2

Controlador cn

Acción An

Lectura de parámetros:

Controlador, acción

Page 13: MODELO VISTA CONTROLADOR EN PHP

El controlador

El controlador es una clase. Está definida dentro de un archivo con extensión PHP.

En el ejemplo de esta presentación, se manejan dos entidades: ciudad y

contacto. Por lo tanto, en el directorios controladores se crean dos

archivos para definir las clases.

class Ciudad { class Contacto {

Gabriel Carrillo - Venezuela 2013

class Ciudad {

public function inicio() {

}

public function insertar() {

}

}

Ciudad.php

class Contacto {

public function inicio() {

}

public function insertar() {

}

}

Contacto.php

Page 14: MODELO VISTA CONTROLADOR EN PHP

<?php

class Ciudad {

public function inicio() {

require "clases/classVista.php";

require "modelos/modeloCiudad.php";

// conexion a la base de datos

require "inc/dbConnect.php";

// LECTURA DE LA TABLA ciudad

$oCiudad = new modeloCiudad($idConn);

$rs = $oCiudad->leerTodo();

// Transforma el resulta $rs en un arreglo asociativo

El controlador

La clase Ciudad es un

controlador, y contiene

todas las acciones que se

pueden ejecutar.

Llamada a la clase

modeloCiudad para la

lectura de tabla de base

de datos

Gabriel Carrillo - Venezuela 2013

// Transforma el resulta $rs en un arreglo asociativo

$item =array();

while ($rows = mysql_fetch_array($rs))

{

$item[] = $rows;

}

// parametros para la vista

$datos["item"] = $item;

$datos["titulo1"] = "LISTA DE CIUDADES ";

session_start();

$datos["userNombre"] = $_SESSION["nombreSesion"];

// Salida de la vista

$oSalida = new Vista("ciudad.php",$datos);

}

de datos

Llamada a la clase Vista

para dar salida de datos al

navegador

Page 15: MODELO VISTA CONTROLADOR EN PHP

El modelo

El modelo se encarga de ejecutar las operaciones de manipulación de la

base de datos y lógica del negocio.

Cada modelo se crea mediante una clase, definida con código php en un

archivo con nombre igual a la clase.

Gabriel Carrillo - Venezuela 2013

<?php

class modeloCiudad {

private $idConn;

function __construct() {

}

function leerTodo() {

}

}

modeloCiudad.php

Page 16: MODELO VISTA CONTROLADOR EN PHP

<?php

class modeloCiudad {

private $idConn;

function __construct($idConn)

{

$this->idConn = $idConn;

}

function leerTodo()

{

El modelo

Ejemplo de una clase. Los

métodos (operaciones

permitidas) de la clase se

definen mediante

funciones.

Gabriel Carrillo - Venezuela 2013

{

$sql = "SELECT * FROM ciudad ORDER BY cd_id ASC";

$resultSet = mysql_query($sql,$this->idConn);

return $resultSet;

}

function obtenerDatos($id)

{

$sql = "SELECT * FROM ciudad

WHERE cd_id = '$id'";

$resultSet = mysql_query($sql,$this->idConn);

return $resultSet;

}

Page 17: MODELO VISTA CONTROLADOR EN PHP

function contarRegistro($nombre)

{

$sql = "SELECT * FROM contacto WHERE con_nombre = '$nombre' ";

$resultSet = mysql_query($sql,$this->idConn);

return mysql_num_rows($resultSet);

}

function insertar($nombre,$tlf)

{

$conn = $this->idConn;

$sql = "INSERT INTO contacto (con_nombre,con_tlf)

VALUES ('$nombre','$tlf' )";

El modelo

Gabriel Carrillo - Venezuela 2013

VALUES ('$nombre','$tlf' )";

mysql_query($sql,$conn);

}

function modificar($id,$nombre,$tlf)

{

$conn = $this->idConn;

$sql = "UPDATE contacto SET con_nombre='$nombre',con_tlf='$tlf'

WHERE con_id = '$id' ";

mysql_query($sql,$conn);

}

Page 18: MODELO VISTA CONTROLADOR EN PHP

function eliminar($id)

{

$conn = $this->idConn;

$sql = "DELETE FROM contacto

WHERE con_id = '$id' ";

mysql_query($sql,$conn);

}

}

El modelo

Gabriel Carrillo - Venezuela 2013

}

?>

Page 19: MODELO VISTA CONTROLADOR EN PHP

La vista

La vista es la parte visible del software. La interacción usuario-aplicación se

lleva a cabo mediante vistas.

Ejemplo de

Gabriel Carrillo - Venezuela 2013

Ejemplo de

una vista

Page 20: MODELO VISTA CONTROLADOR EN PHP

La vista

La vista se crea con código html, hojas de estilo y, opcionalmente, javascript.

Se recomienda separar el contenido de la presentación.

Controlador VistaParámetros

Gabriel Carrillo - Venezuela 2013

navegador

Page 21: MODELO VISTA CONTROLADOR EN PHP

La vista

<?php

/**

* Archivo : classVista.php

* Funcion : Definicion de la clase Vista

*

*/

class Vista {

public $data=array();

function __construct($template,$data=array()) {

La clase Vista se utiliza

para crear un objeto

que forma la salida

Gabriel Carrillo - Venezuela 2013

if( is_array($data) ) {

extract($data);

}

$encabezado = "vistas/encabezado.php";

$template = "vistas/".$template;

$pie = "vistas/pie.php";

include($encabezado);

include($template);

include($pie);

}

}

?>

Page 22: MODELO VISTA CONTROLADOR EN PHP

La vista

El código siguiente en HTML genera la salida para el objeto ciudad.

<?php

/**

*Archivo : ciudad.php

*Funcion : Listar datos de ciudades.

*/

$ver ="index.php?cnt=Beneficiarios&act=ver&benid=";

$modificar ="index.php?cnt=Contacto&act=modificar&id=";

$eliminar ="index.php?cnt=Contacto&act=eliminar&id=";

?>

Gabriel Carrillo - Venezuela 2013

?>

<body>

<div id="contenedor">

<div id="encabezado">

<table border=0 align=center>

<tr>

<th> <?php echo "$titulo1 "; ?> </th>

</tr>

</table>

</div>

Page 23: MODELO VISTA CONTROLADOR EN PHP

La vista

<div id=datatable>

<table border=0 align=center>

<tr>

<th>No </th> <th>NOMBRE</th> <th colspan=2>ACCI&Oacute;N</th>

</tr>

<?php

foreach($item as $fila) {

?>

<tr>

<td width=25> <?php echo $fila['cd_id'] ?> </td>

Gabriel Carrillo - Venezuela 2013

<td width=25> <?php echo $fila['cd_id'] ?> </td>

<td width=300> <?php echo $fila['cd_nombre'] ?></td>

<td width=30> <a title="Modificar" href=<?php echo $modificar.$fila['cd_id']; ?> >

<img src="inc/img/edit.png" width=15 height=15 border=0></a> </td>

<td width=30> <a title="Eliminar" href=<?php echo $eliminar.$fila['cd_id']; ?> >

<img src="inc/img/delete.gif" width=15 height=15 border=0></a> </td>

</tr>

<?php

}

?>

</table>

</div>

Page 24: MODELO VISTA CONTROLADOR EN PHP

La vista

<table border=0 align=center>

<tr>

<td>

<button type="button" OnClick="location='index.php?cnt=Ciudad&act=incluir'">

Nuevo </button>

<button type="button"

OnClick="location='index.php?cnt=Ciudad&act=imprimir'">Imprimir</button>

<button type="button"

OnClick="location='index.php?cnt=Menu&act=inicio'">Regresar</button>

Gabriel Carrillo - Venezuela 2013

</td>

</tr>

</table>

Page 25: MODELO VISTA CONTROLADOR EN PHP

La vista

Para generar una vista, en este ejemplo se usan: un encabezado, un

contenido y un pie de pagina. Por ejemplo, la salida para el objeto ciudad

se realiza con los archivos siguientes:

Encabezado (encabezado.php)

Gabriel Carrillo - Venezuela 2013

Contenido (ciudad.php)

Pie de página (pie.php)

Page 26: MODELO VISTA CONTROLADOR EN PHP

La vista

Vista en en el ejemplo.

Encabezado

Contenido

Gabriel Carrillo - Venezuela 2013

Pie de página

Page 27: MODELO VISTA CONTROLADOR EN PHP

La vista

Encabezado

Contenido

Gabriel Carrillo - Venezuela 2013

Contenido

Pie de página

Page 28: MODELO VISTA CONTROLADOR EN PHP

La vista

El archivo encabezado.php contiene:

<?php

/**

* ENCABEZADO

*

*Archivo : encabezado.php

Gabriel Carrillo - Venezuela 2013

*Archivo : encabezado.php

*Funcion : Vista del encabezado para la aplicacion.

*/

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title> <?php echo "$titulo1"; ?> </title>

<link rel="stylesheet" type="text/css" href="css/estilo.css" />

</head>

Page 29: MODELO VISTA CONTROLADOR EN PHP

La vista

El archivo pie.php contiene:

<div id="pie">

<table border=0 >

<tr>

<td width=200> Version: 1 </td>

<td> Usuario : <?php echo $userNombre; ?></td>

</table>

Gabriel Carrillo - Venezuela 2013

</table>

</div>

</div>

</body>

</html>

Page 30: MODELO VISTA CONTROLADOR EN PHP

La vista

La presentación de la vista (colores, letras, maquetación) se facilita con

hojas de estilo externas. En este ejemplo, el archivo se llama estilo.css.

/**

estilo.css

Autor: Gabriel Carrillo

*/

/* ------------------------------

Gabriel Carrillo - Venezuela 2013

/* ------------------------------

GENERAL

-------------------------------*/

html {

background: #5f9ea0;

}

.rojo {

color: red;

}

.verde {

color: green;

}

Page 31: MODELO VISTA CONTROLADOR EN PHP

La vista

/* ------------------------------

CONTENEDOR

-------------------------------*/

#contenedor {

font-family: arial;

width:80%;

margin-left:10%;

margin-right:10%;

background: #ffffff;

color: #000000;

}

#encabezado {

height: 120px;

/*background: #104E8B; */

Gabriel Carrillo - Venezuela 2013

/*background: #104E8B; */

background: url(../inc/img/header1.jpg) ;

}

#encabezado th {

font-size: 18;

color: white;

}

Page 32: MODELO VISTA CONTROLADOR EN PHP

Consideraciones generales

En este trabajo se presenta una aplicación del patrón arquitectónico Modelo

Vista Controlador para el desarrollo de sistemas Web en lenguaje PHP.

Esta herramienta permite reutilizar diseño detallado y código, con lo cual

facilita la creación de software de calidad.

Es una metodología ágil que puede ser usada por estudiantes y

profesionales interesados en el desarrollo de software.

Gabriel Carrillo - Venezuela 2013

profesionales interesados en el desarrollo de software.