Actualmente estas viendo el weblog personal de Carlos Montalvo, un profesional en el desarrollo web con sede en la ciudad de Lima, Perú.

Suscribete a posts o comentarios

Sigueme en Twitter

Comenzando MVC con php

02Aug

Escrito por hace 2 años y 1 mes | 16 Comentarios

MVC es un patrón de diseño en ingeniería de software, este mismo patrón lo vemos implementado en algunos frameworks PHP tales como.

Ejemplo de una consulta sencilla de la forma más usada.

< ?php
function get_posts()
{
  mysql_connect(...);
 $resultado = mysql_query('SELECT * FROM wp_posts ORDER BY date DESC');
  $posts = array();
  while($post = mysql_fetch_objects($resultado)) {
	$posts[] = $post;
  }
  return $posts;
}
?>

Usando el patrón de diseño MVC en este mismo ejemplo quedaría así.

Modelo ( modelo.php )

< ?php
function get_posts()
{
  mysql_connect(...);
 $resultado = mysql_query('SELECT * FROM wp_posts ORDER BY date DESC');
  $posts = array();
  while($post = mysql_fetch_objects($resultado)) {
	$posts[] = $post;
  }
  return $posts;
}
?>

Controlador ( controlador.php )

< ?php
	$posts = get_posts();
	display_template('vista.tpl');
?>

Vista ( vista.tpl )

<h1>Ultimas entradas</h1>
< ?php foreach ($posts as $post) { ?>
<h2>< ?php echo $post->title; ?></h2>
<p>< ?php echo $post->content; ?></p>
< ?php } ?>
  

Explicación breve:
En el Modelo declaramos una función conteniendo la consulta de datos retornando el array de los datos.
En el Controlador es donde manipulamos las funciones del modelo; en cuyo caso se ejecuta la función y se le asigna a una variable y mostramos la vista.
En la Vista en donde mostramos los datos ejecutados por el controlador
Notaran que implementando el patrón de diseño MVC logramos separar el código php (funcionalidad), del html (diseño) en gran parte; esto es un gran avance enfocándonos no solo en la programación si no también al diseño.
Con una aplicación mayor tendríamos varias ventajas implementando MVC tanto reutilización de código por otro programador como para poder reducir el tiempo de modificar y añadir mejoras a la aplicación.
El MVC no solo se puede implantar en PHP, si no en cualquier lenguaje (JAVA, Ruby, Perl y Otros ).
MVC no a tenido tanto excito en php como en otros lenguajes de programación ( por el momento ), creo para mi humilde opinión por que existen diversas alternativas de FrameWork para PHP y ninguna termina de convencer pero la mas completa que he utilizado es Zend FrameWork.

Categorizado :Desarrollo Web

Etiquetado :mvc,php

16 Comentario(s) para "Comenzando MVC con php"

david ruiz

August 2nd, 2008 hace 2 años y 1 mes

Esta muy bien tu pagina para los que estamos aprendiendo a manejar php y mysql esta chida saludos

gafeman

August 4th, 2008 hace 2 años y 4 semanas

yo programo como el culo, aunque ahora siempre intento separar el codigo del diseño jeje

Carlos Montalvo

August 4th, 2008 hace 2 años y 4 semanas

Eso lo reconosco Gafeman eh visto tus proyectos personales ;)

Enlaces de la semana 3 — Viciao2k3

August 9th, 2008 hace 2 años y 3 semanas

[...] Comenzando MVC con php [...]

Antares

August 11th, 2008 hace 2 años y 3 semanas

entonces... en Model es donde se mete las funciones, en Vista los templates y en Controller donde se ejecutan no?
me quedan un par de dudas...
Donde esta la función encargada de interpretar el template? en model? y que se hace en browser? actualmente muchas aplicaciones usan AJAX para funcionar y eso no se puede ejecutar totalmente en Controller, se engloba en Browser?

Carlos Montalvo

August 11th, 2008 hace 2 años y 3 semanas

@Antares: Mi ejemplo es algo basico. Lo que explico es la estructura del patron MVC en PHP.

El interprete del template vendria ser una libreria incorporada muy aparte del patron MVC se podria usar un sistema de plantillas como smarty u otro.

Lo del ajax tambien es un agregado que vendria a estar en la Vista por lo general.

Pero si deseas mayor información puedes pasearte por CakePHP o Kumbia son framework en php que utilizan el patron MVC y tienen librerias de templates y ajax.

Antares

August 11th, 2008 hace 2 años y 3 semanas

hum.. realmente interesante el kumbia, no lo conocía..
Tendré que echarle un vistazo mas intenso.....

Luis Gonzalez

September 22nd, 2008 hace 1 año y 11 meses

Carlos, esta muy bueno tu ejemplo, sera que podrias poner un ejemplo de la vida real, un ABM de clientes o algo asi.

Juan González

March 8th, 2009 hace 1 año y 5 meses

Saludos, esta muy bueno tu ejemplo. Estoy ahorita desarrollando mi primer proyecto completamente basado en el patron MVC y tengo una duda con algo.

De momento el unico problema que he tenido tiene que ver con la parte en la cual tu muestras la vista.

Yo no he logrado hacerlo correctamente, de momento hago un header("Location.."); para redireccionar o un include pero me da problemas al visualizar todo.

Puedes elaborar un poco mas en esta funcion display_template que comentas? es facil implementar algo asi? Esto lograria hacer algo como el "location" pero manteniendo los valores que recupere en el controlador?

Agradecido de antemano por tu ayuda,

Saludos!

Diego

April 30th, 2009 hace 1 año y 4 meses

Hola, esta muy bueno el ejemplo que pones, pero no termino de entenderlo,(entiendo lo que esta escrito, pero faltan algunas cosas que para mi sin ellas yo no lo entiendo)
por ejemplo:
en la linea de codigo
(de vista.tpl)
no entiendo como reconoce a $posts y como este llega cargado. ¿me explico? tenes un require? un include, tenes un global?
perdon si mi pregunta es muy principiante, pero eso es lo que soy.
Te agradeceria mucho que lo aclares

Edusenpai

June 13th, 2009 hace 1 año y 2 meses

Hola. Una consulta no hay algun estandar para programar en php usando MVC ? si lo hubiera plz dimelo yo quero programar con algo estandar osea sin usar plantillas algo que se pueda usar en todos lados. Muchas gracias estare esperando respuesta :D

MaRuLiTa

August 11th, 2009 hace 1 año y 3 semanas

holis yo no entiendo nada de esto O_O es chino basicoo pa mi =( pero menoo pasaba pa dejarte un beshoteee enormee y decirte q te kiero mucho ^^ muakkkkk

Robert

September 14th, 2009 hace 11 meses y 2 semanas

Creo que no estoy de acuerdo con el comentario. Soy desarrollador Web y utilizo cakePHP que hace uso del MVC y creeme que se pueden hacer infinidad de cosas muy buenas, que son eficientes y eficaces.
Ya depende de cada quien que capacidad tenga para sacarle el verdadero jugo a esta forma de programación y uso de cada framework.

Un saludo para todos, esta muy interesante el sitio, felicidades Cali.

Pedro

January 4th, 2010 hace 7 meses y 4 semanas

Cual es el mejor??????????

Carlos Montalvo

January 16th, 2010 hace 7 meses y 2 semanas

@Pedro el mejor es con cual te desenvuelves mejor

Samet Ç.

February 16th, 2010 hace 6 meses y 2 semanas

Good sample.