Foros del Web » Programando para Internet » PHP »

concepto MVC

Estas en el tema de concepto MVC en el foro de PHP en Foros del Web. Hola: Llevo ya tiempo programando sitios web y la verdad es que yo ya sé que me estoy quedando algo obsoleto. El caso es que ...
  #1 (permalink)  
Antiguo 02/01/2009, 15:31
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
concepto MVC

Hola:
Llevo ya tiempo programando sitios web y la verdad es que yo ya sé que me estoy quedando algo obsoleto.
El caso es que estoy intentando documentarme para poder realizar futuros proyectos web de la mejor forma posible y utilizando un código bien elaborado.

Por mucho que estoy leyendo sobre el concepto de MVC (modelo-vista-controlador) sigo sin conseguir extraer una idea global de cómo tiene que funcionar un sitio web ni cómo hay que estructurarlo antes de ponerme a teclear código-

Igualmente hoy en día en mucho de mis proyectos web mi forma de programar ha sido separando las funciones del sitio web de la parte del diseño creando carpetas en las que incluyo funciones de php y otras en las que incluyo css, javascript o lo que sea . En los archivos que están en la carpeta de las funciones lo que hago es crear ahí mis funciones en php que luego voy a utilizar en determinadas página por medio del include. Imagino que ésta es una forma obsoleta de programar y quiero renovarme cuanto antes lo que pasa es que no veo bien la diferencia entre hacerlo utilizando clases y objetos y hacerlo como yo lo vengo haciendo hasta ahora, es decir, creando funciones e ir incluyendolas. Es decir, no veo en qué parte de mis proyectos puedo ponerme a crear una clase.

Y otra de mis dudas en cuanto a mi renovación! jeje es la de usar smarty u otro sistema de plantillas en php ya que uso mucho en las funciones que creo echo poniéndole dentro código HTMl y en ocasiones me vuelvo loco. Entonces se que esto se evita con templates como smarty, por ello me gustaría me dieseis algún enlace a un tutorial a ser posible en espñaol o que alguien me de una idea concreta de cómo utilizarlo.
Muchas gracias!
  #2 (permalink)  
Antiguo 02/01/2009, 16:37
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: concepto MVC

la idea del MVC es separar las capas:
Modelo: aca vas a tener tus php con todas las consultas sql, nada de otra cosa solo todo lo que sea con base de datos y que te devuelva los resultados en un array por ejemplo.

Vistas:Acá iria todo tu html o la plantilla que uses por ejemplo smarty, la idea es que practicamente no uses php y en caso de hacerlo sea solamente while, if y case nada mas.

Controladores:Aca unis lo que traes del modelo y se lo asignas a las vistas.

date una vuelta por el foro de programacion orientada a objetos que hay muchos temas sobre este.

salu2
  #3 (permalink)  
Antiguo 02/01/2009, 16:59
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: concepto MVC

gracias por tu respuesta rápida joe pero sigo sin verlo claro.

Osea en el modelo yo guardo mis archivos php con las funciones que ejecutan consultas a la BD no?

Luego en los controladores yo creo los objetos de las clases que lo que hacen es recuperar los datos que han cogido los modelos no?
Y despues desde la vista lo que hago es llamar a esos objetos que me van a mostrar el contenido que han recuperado no??

Espero que sea así sino ya no sé no qué hacer!!
Aún así yo sigo sin ver mucha diferencia en el hecho de funciones en archivos a parte y luego usarlas pasandoles varios parámetros no?

En fin gracias y sigo esperando sus aportaciones!
Un saludo
  #4 (permalink)  
Antiguo 02/01/2009, 20:55
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: concepto MVC

si algo asi pongamos un ejemplo tal vez es mas claro asi....
Código php:
Ver original
  1. <?
  2. /**
  3. * class noticias (modelo)
  4. */
  5. Class Noticias{
  6. public function mostrarnoticias($id){
  7. $sql="select * from noticias where id=$id";
  8. $result=mysql_query($sql);
  9. $noticia=mysql_fetch_array(result);
  10.  
  11. return $noticia
  12. }
  13.  
  14. }
  15. ?>
  16. <?
  17. /**
  18. * class controlador (ccontrolador)
  19. */
  20. Class Noticiacontrolador extend controller{
  21. function index(){
  22. $news=noticias();
  23. $noticias=$news->mostrarnoticias($_request['id'];
  24. $view->show('nombre_archivo_vista.php',$noticia);
  25. }
  26.  
  27. }
  28. ?>
  29. <?
  30. /**
  31. * archivo html
  32. */?>
  33. <p><? echo $noticia['titulo'];?></p>

La diferencia a como lo venis haciendo vos es que vas a tener una carpeta modelo con todos los php que hacen las consultas sql, otra que se llama controler que tiene todos los controladores y una carpeta vistas con todos los html. Vale aclarar que el patron MVC lo podes respetar a full o adaptarlo a tus necesidades (como venias haciendo)
  #5 (permalink)  
Antiguo 03/01/2009, 07:58
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: concepto MVC

Vale ya voy pillando algo mas de idea, pero aún así hay muchas cosas que no entieendo de tu ejemplo y a ver si con tu ayuda puedo ir entiendiend mejor cómo hacer los proyectos web:

1º Class Noticiacontrolador extend controller --- No entiendo quién es ni qué hace controller
2ºEn la function index() dentro está la variable $news que lo que hace es coger el valor que le devuelve noticias() no?. Dónde está la función noticias ya que no la veo por ningún lado.
3º $view->show('nombre_archivo_vista.php',$noticia). Esto que és?

Y entonces, si además quiero empezar a usar plantillas como por ejemplo smarty, se supone que todo el entramado que conlleva smarty habrá que ponerlo dentro de la carpeta vistas no?

Y todo lo referente a css, js y demás cosas que se utilicen donde hay que ir poniendolo entonces?

Un saludo

Última edición por acholaco; 03/01/2009 a las 08:05
  #6 (permalink)  
Antiguo 04/01/2009, 19:28
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: concepto MVC

Cita:
Iniciado por acholaco Ver Mensaje
1º Class Noticiacontrolador extend controller --- No entiendo quién es ni qué hace controller
Si tal vez no fue el mejor ejemplo en el 99,9% de las veces cuando se usa mvc se implementa programación orientada a objetos.

Cita:
Iniciado por acholaco Ver Mensaje
2ºEn la function index() dentro está la variable $news que lo que hace es coger el valor que le devuelve noticias() no?. Dónde está la función noticias ya que no la veo por ningún lado.
no lo que hace $news es ser una instancia de la clase noticias.
Cita:
Iniciado por acholaco Ver Mensaje
3º $view->show('nombre_archivo_vista.php',$noticia). Esto que és?
eso lo que hace asignar al archivo de la vista, todo el contenido de la variable noticia
Cita:
Iniciado por acholaco Ver Mensaje
Y entonces, si además quiero empezar a usar plantillas como por ejemplo smarty, se supone que todo el entramado que conlleva smarty habrá que ponerlo dentro de la carpeta vistas no?

Y todo lo referente a css, js y demás cosas que se utilicen donde hay que ir poniendolo entonces?
si todo lo que seria smarty iria en las vistas o en una carpeta aparte el smarty y el resto en las vistas.

aca te dejo algunos tutos para que veas:
http://www.jourmoly.com.ar/category/php/
http://www.zonaphp.com/creando-webs-modulares/
  #7 (permalink)  
Antiguo 08/01/2009, 06:47
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: concepto MVC

gracias empezaré a implementar un sitio intentanto seguir el patrón MVC
cuando me surjan dudas, que me surgirán, no tardaré en volver por aquí.
Aunque claro está, empezaré a documentarme un poco en el tema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:30.