SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
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
Introducción
Esta investigación tiene el propósito de presentar una
metodología para el desarrollo de aplicaciones Web en
lenguaje PHP.
El patrón arquitectónico Modelo Vista Controlador
Gabriel Carrillo - Venezuela 2013
lenguaje PHP.
La metodología 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.
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.
Tecnología Web
El patrón arquitectónico Modelo Vista Controlador
Servidor WebInternetNavegador
Apache
PHP, JSP MySQL
Petición
Gabriel Carrillo - Venezuela 2013
PHP, JSP MySQL
PostgreSQL
Mozilla Firefox Respuesta
CLIENTE SERVIDOR
¿ 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
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.
Controlador
Se 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
Modelo
Se 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.
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
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
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.
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.
<?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
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
frontal
Acción A2
Controlador cn
Acción An
Lectura de parámetros:
Controlador, acción
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
<?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
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
<?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;
}
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);
}
function eliminar($id)
{
$conn = $this->idConn;
$sql = "DELETE FROM contacto
WHERE con_id = '$id' ";
mysql_query($sql,$conn);
}
}
El modelo
Gabriel Carrillo - Venezuela 2013
}
?>
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
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
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);
}
}
?>
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>
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>
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>
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)
La vista
Vista en en el ejemplo.
Encabezado
Contenido
Gabriel Carrillo - Venezuela 2013
Pie de página
La vista
Encabezado
Contenido
Gabriel Carrillo - Venezuela 2013
Contenido
Pie de página
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>
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>
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;
}
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;
}
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.

Más contenido relacionado

La actualidad más candente

Programación Modular y Estructyrada
Programación Modular y EstructyradaProgramación Modular y Estructyrada
Programación Modular y Estructyradaguestefc95b
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosFranklin Parrales Bravo
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en JavaUCE
 
Como insertar una imagen en eclipse java
Como insertar una imagen en eclipse javaComo insertar una imagen en eclipse java
Como insertar una imagen en eclipse javaJosué Naquid
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 
POO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basuraPOO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basura1da4
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herenciajlmanmons
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++compumet sac
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosFranklin Parrales Bravo
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)Roberto Rojas
 
Presentacion Programacion
Presentacion ProgramacionPresentacion Programacion
Presentacion Programacionguestd5974a6
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetosjose_rob
 

La actualidad más candente (20)

Programación Modular y Estructyrada
Programación Modular y EstructyradaProgramación Modular y Estructyrada
Programación Modular y Estructyrada
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Como insertar una imagen en eclipse java
Como insertar una imagen en eclipse javaComo insertar una imagen en eclipse java
Como insertar una imagen en eclipse java
 
Estilos arquitectónicos
Estilos arquitectónicosEstilos arquitectónicos
Estilos arquitectónicos
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
POO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basuraPOO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basura
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
Comandos java
Comandos javaComandos java
Comandos java
 
Introduccion a Visual Studio
Introduccion a Visual StudioIntroduccion a Visual Studio
Introduccion a Visual Studio
 
Colas
ColasColas
Colas
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)
 
Modelos uml compras v4
Modelos uml compras v4Modelos uml compras v4
Modelos uml compras v4
 
Presentacion Programacion
Presentacion ProgramacionPresentacion Programacion
Presentacion Programacion
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 

Destacado

MODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADORMODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADORRené Pilataxi
 
Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controladorCecy Villalta
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controladorLuis Gutierrez
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter ADWE Team
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 
Iniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebIniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebRightster
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosRightster
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosRightster
 
Introduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkIntroduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkBermi Ferrer
 
Iniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidorIniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidorRightster
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosRightster
 
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...Javier Condori Flores
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwareJose Patricio Bovet Derpich
 

Destacado (20)

MODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADORMODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADOR
 
Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controlador
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
MVC
MVCMVC
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
 
Febrero 2009 - Presentación PFC AGritos!
Febrero 2009 - Presentación PFC AGritos!Febrero 2009 - Presentación PFC AGritos!
Febrero 2009 - Presentación PFC AGritos!
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 
Iniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebIniciación PHP 5. Programación Web
Iniciación PHP 5. Programación Web
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Introduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkIntroduccion al Akelos Php Framework
Introduccion al Akelos Php Framework
 
Iniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidorIniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidor
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. Ejemplos
 
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 

Similar a MODELO VISTA CONTROLADOR EN PHP (20)

Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Programacion 3 mvc
Programacion 3 mvcProgramacion 3 mvc
Programacion 3 mvc
 
Presentacion YII
Presentacion YIIPresentacion YII
Presentacion YII
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Mi app-asp-net-mvc2
Mi app-asp-net-mvc2Mi app-asp-net-mvc2
Mi app-asp-net-mvc2
 
Jquery Hmvc
Jquery HmvcJquery Hmvc
Jquery Hmvc
 
Introduccion mvc
Introduccion mvcIntroduccion mvc
Introduccion mvc
 
Drupal 7 a través Drupal Commerce
Drupal 7 a través Drupal CommerceDrupal 7 a través Drupal Commerce
Drupal 7 a través Drupal Commerce
 
Guía Practica conexión BD 2021
Guía Practica conexión BD  2021Guía Practica conexión BD  2021
Guía Practica conexión BD 2021
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Framework
FrameworkFramework
Framework
 
Semana 4 Estructura y componentes SPA
Semana 4  Estructura y componentes SPASemana 4  Estructura y componentes SPA
Semana 4 Estructura y componentes SPA
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Programacion MVC.net
Programacion MVC.netProgramacion MVC.net
Programacion MVC.net
 
Rails intro
Rails introRails intro
Rails intro
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 

MODELO VISTA CONTROLADOR EN PHP

  • 1. 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
  • 2. Introducción Esta investigación tiene el propósito de presentar una metodología para el desarrollo de aplicaciones Web en lenguaje PHP. El patrón arquitectónico Modelo Vista Controlador Gabriel Carrillo - Venezuela 2013 lenguaje PHP. La metodología 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.
  • 3. 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.
  • 4. Tecnología Web El patrón arquitectónico Modelo Vista Controlador Servidor WebInternetNavegador Apache PHP, JSP MySQL Petición Gabriel Carrillo - Venezuela 2013 PHP, JSP MySQL PostgreSQL Mozilla Firefox Respuesta CLIENTE SERVIDOR
  • 5. ¿ 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
  • 6. 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. Controlador Se 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 Modelo Se 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.
  • 7. 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
  • 8. 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
  • 9. 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.
  • 10. 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.
  • 11. <?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
  • 12. 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 frontal Acción A2 Controlador cn Acción An Lectura de parámetros: Controlador, acción
  • 13. 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
  • 14. <?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
  • 15. 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
  • 16. <?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; }
  • 17. 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); }
  • 18. function eliminar($id) { $conn = $this->idConn; $sql = "DELETE FROM contacto WHERE con_id = '$id' "; mysql_query($sql,$conn); } } El modelo Gabriel Carrillo - Venezuela 2013 } ?>
  • 19. 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
  • 20. 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
  • 21. 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); } } ?>
  • 22. 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>
  • 23. 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>
  • 24. 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>
  • 25. 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)
  • 26. La vista Vista en en el ejemplo. Encabezado Contenido Gabriel Carrillo - Venezuela 2013 Pie de página
  • 27. La vista Encabezado Contenido Gabriel Carrillo - Venezuela 2013 Contenido Pie de página
  • 28. 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>
  • 29. 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>
  • 30. 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; }
  • 31. 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; }
  • 32. 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.