Foros del Web » Programando para Internet » PHP »

mvc desde cero

Estas en el tema de mvc desde cero en el foro de PHP en Foros del Web. Buenas tardes a todos, estoy empezando a aprender a programar mvc con php, y me estoy guiando con tutoriales que e encontrado googleando y videos ...
  #1 (permalink)  
Antiguo 25/07/2013, 13:07
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
mvc desde cero

Buenas tardes a todos, estoy empezando a aprender a programar mvc con php, y me estoy guiando con tutoriales que e encontrado googleando y videos de youtube pero resulta que cada tutorial y cada video que veo es totalmente diferente, en lo único que coinciden es en la teoria pero en la practica cada quien se trae los datos del controlador a la vista diferente....


si alguno de ustedes me podría dar algún ejemplo sencillo se lo agradecería de ante mano...
  #2 (permalink)  
Antiguo 25/07/2013, 13:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: mvc desde cero

Lo que pasa es que así es como se trabaja un patrón de diseño, las implementaciones varían y mucho, solo es un concepto MVC y no hay una forma que digas esta es la absoluta correcta.

Lo que debes de hacer es estudiar las formas y hacerlo de la forma que más se apegue a tus necesidades, eso es todo, mientras respetes como dices la teoría de como funciona MVC, vas bien
  #3 (permalink)  
Antiguo 25/07/2013, 13:59
 
Fecha de Ingreso: febrero-2003
Ubicación: Santiago
Mensajes: 220
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: mvc desde cero

Exactamente, el MVC es un modelo. Osea es una forma de hacer las cosas. Tal como debes saber, debes separar la capa de datos , visual y control.

Como dice gatorv, respetandolo, es MVC. (ahora hay muchos Frameworks que lo tráen preordenado)
__________________
Roberto Osses Elgueta
Senior Web Developer
  #4 (permalink)  
Antiguo 25/07/2013, 14:26
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mvc desde cero

Cita:
Iniciado por GatorV Ver Mensaje
Lo que pasa es que así es como se trabaja un patrón de diseño, las implementaciones varían y mucho, solo es un concepto MVC y no hay una forma que digas esta es la absoluta correcta.

Lo que debes de hacer es estudiar las formas y hacerlo de la forma que más se apegue a tus necesidades, eso es todo, mientras respetes como dices la teoría de como funciona MVC, vas bien
Gracias por tu respuesta, ahora otra pregunta al momento de tener mi controlador lo ideal seria tener los objetos de mi modelo en el controlador y incluir el controlador en la vistas?

ejemplo

Código PHP:
Ver original
  1. // mi modelo
  2.  
  3. class suma{
  4.  
  5.   private $a;
  6.   private $b;
  7.   private $suma;
  8.  
  9.   public function __construct(){
  10.      
  11.      $this->a=1;
  12.      $this->b=2;
  13.      
  14.  }
  15.  
  16.   public function sumar(){
  17.      $this->suma = $this->a + $this->b;
  18.      return $this->suma;
  19.  }
  20. }
  21.  
  22. // mi controlador
  23.  
  24.   require_once('../modelo.php');
  25.  
  26.   objecto = new suma();
  27.  
  28.   $suma =  objecto->sumar();
  29.   echo "El resultado de la suma es: ".$suma;
  30.  
  31.  
  32. // mi vista
  33.  
  34. <html>
  35.   <head></head>
  36.   <body>
  37.       <?php
  38.           require_once('../controlado.php');
  39.       ?>
  40.   </body>
  41. </html>
  #5 (permalink)  
Antiguo 25/07/2013, 15:17
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: mvc desde cero

Por supuesto que no, el controlador jamas se encarga de la vista (lo que se imprime y como se imprime), eso es trabajo de la vista, la teoría dice que el controlador le debe pasar las variables con las que la vista generará el HTML final (o lo que sea, json, xml, etc)...

Siguiendo tu ejemplo...
Código PHP:
Ver original
  1. // mi controlador
  2.  
  3.   require_once('../modelo.php');
  4.  
  5.   objecto = new suma();
  6.  
  7.   $suma =  objecto->sumar();
  8.  
  9.   //en este caso usaré una variable imaginaria que envia las variables a la vista
  10.   $this->render('vista_de_la_accion.php',$suma);

Tu vista (vista_de_la_accion.php)...
Código PHP:
Ver original
  1. echo 'El resultado de la suma es: '.$suma;

El punto es que debes programar o implementar una nueva clase que procese las vistas de cada acción (que pertenecen al controlador), y estas serán las que se encarguen de visualizar y acomodar lo que el usuario verá (según el caso)
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 27/07/2013, 06:49
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mvc desde cero

Cita:
Iniciado por Nemutagk Ver Mensaje

Código PHP:
Ver original
  1. $this->render('vista_de_la_accion.php',$suma);
  2.  echo 'El resultado de la suma es: '.$suma;

El punto es que debes programar o implementar una nueva clase que procese las vistas de cada acción (que pertenecen al controlador), y estas serán las que se encarguen de visualizar y acomodar lo que el usuario verá (según el caso)

esta clase estaria en el modelo?

disculpa la molestia pero podrias darme algun ejemplo sencillo de la clase que que debería de comunicarse con la vista para poder tener una idea...
  #7 (permalink)  
Antiguo 27/07/2013, 07:00
 
Fecha de Ingreso: marzo-2013
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: mvc desde cero

Suerte Oscar!

Es bastante complicado este lenguaje de programación yo llevo 3 años aprendiendo como utilizar las distribuciones de probabilidad en php, y aun tengo dudas
  #8 (permalink)  
Antiguo 27/07/2013, 07:01
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: mvc desde cero

VISTA : solo se encarga de presentar la informacion al usuario
MODELO : conjunto de operaciones para crear-leer-modificar-borrar (CRUDO) registros en DB
CONTROLLER : procesa peticiones, recoje y envia datos al modelo, envia informacion a las vistas

Notas:

- El "modelo" podria representar "registros" u "objetos" implementando modelos como DataMapper o ActiveRecord.
- La "vista" podria acceder al "modelo" en algunos casos.

Cita:
Iniciado por oscard41 Ver Mensaje
esta clase estaria en el modelo?

disculpa la molestia pero podrias darme algun ejemplo sencillo de la clase que que debería de comunicarse con la vista para poder tener una idea...
Con mis disculpas a @Nemutagk creo es algo confuso coloque render() mas bien seria view() o algo similar porque render haria pensar en generacion de HTML / XML / etc... y es claro que es carga de la vista y pasaje de variables

Código PHP:
$this->view('nombre_vista',$array_vars); 
Donde esta el metodo view() que era la pregunta original ......? es parte del "core" del framework ejemplificado.. ya sea que directamente es parte del "Controlador base" o bien es parte de una libreria usada por este.
__________________
Salu2!

Última edición por Italico76; 27/07/2013 a las 07:30
  #9 (permalink)  
Antiguo 27/07/2013, 10:59
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: mvc desde cero

Hola yo he seguido unos tutoriales que la verdad es de lo mejor que he visto en MVC desde cero, la web es la siguiente: [URL="http://www.dlancedu.com/php.html"]http://www.dlancedu.com/php.html[/URL]

ahi aprendes a crear un framework desde ceros, es muy completo
  #10 (permalink)  
Antiguo 27/07/2013, 11:58
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: mvc desde cero

Simplemente lo que tienes que hacer es respetar lo que dice la teoría, si googleas un poco conseguiras mucha teoría la cual seguir .

Cita:
- El "modelo" podria representar "registros" u "objetos" implementando modelos como DataMapper o ActiveRecord.
- La "vista" podria acceder al "modelo" en algunos casos.
DataMapper o ActiveRecord son patrones de diseño que implementan los ORM para acceso a los datos, en teoría como he discutido varias veces no debería de estar pegado al modelo según la teoría (que debería contener la lógica del negocio) aunque muchos frameworks lo hagan así.

Cita:
Con mis disculpas a @Nemutagk creo es algo confuso coloque render() mas bien seria view() o algo similar porque render haria pensar en generacion de HTML / XML / etc... y es claro que es carga de la vista y pasaje de variables
es solo un ejemplo, y normalmente se usa render para hacer el renderizado de una vista

__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 27/07/2013, 12:31
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: mvc desde cero

Cita:
Iniciado por oscard41 Ver Mensaje
Buenas tardes a todos, estoy empezando a aprender a programar mvc con php, y me estoy guiando con tutoriales que e encontrado googleando y videos de youtube pero resulta que cada tutorial y cada video que veo es totalmente diferente, en lo único que coinciden es en la teoria pero en la practica cada quien se trae los datos del controlador a la vista diferente....
Como te dice GatorV, MVC, cuando se ha aplicado al desarrollo web, ha quedado en una serie de ideas generales, o incluso una "excusa" que los distintos frameworks que han ido saliendo han interpretado cada uno a su manera.
MVC es un paradigma muy antiguo.Cuando se programaba para Windows 3.1, el primer paso de crear una aplicación era seleccionar si se quería una aplicación SDI o MDI (single/multiple document interface).O sea, si la aplicación tenía subventanas "dentro" (es decir , podías tener múltiples "vistas" del mismo "modelo" a la vez), o sólo una.
En ese entorno, la interacción del usuario se hace sobre las vistas, pasan al controlador, y de ahí al modelo, todo dentro de un mismo proceso en el mismo ordenador.Hay que tener en cuenta también que en este caso, el sistema es muy orientado a eventos.
Suponer que eso es lo que ocurre en un entorno web, es una simplificación muy grande, lo que impide un mapeo evidente del paradigma al desarrollo web.
El problema de algunos programadores es que piensan que MVC es un paradigma creado para el desarrollo web, por lo que suponen que el mapeo de conceptos MVC a funcionalidades de los frameworks, es evidente, asi que cuando ven incoherencias entre frameworks, es que piensan que el problema es que ellos no entienden MVC.
Y no es así, MVC es un paradigma del que actualmente se echa mano, para poner "algún" principio que ordene el caos que siempre ha sido el desarrollo php/web.
Yo entiendo los frameworks MVC de esa forma, como el principio general en el que se basan, pero son tantos los conceptos que existen en el desarrollo web, para los que MVC no da respuesta, que al final los frameworks acaban siendo cada uno su propio mundo, ya que cada uno da respuesta a esos elementos que se quedan fuera, de una forma diferente.

Hay muchos ejemplos de estas incoherencias de MVC, y por qué cosas que se ajustaban muy bien a esa filosofía, hace ya casi 20 años, en el desarrollo web no están tan claras.Sólo por poner uno:
Supongamos una aplicación de escritorio como photoshop.En photoshop puedes tener una imagen duplicada, en 2 ventanas.Eso son 2 vistas del mismo modelo (la imagen).Cuando el usuario hace click sobre una de las imágenes, la vista envía el evento al controlador,y, según la herramienta que tengas activada, hace una operación sobre la imagen, que, al modificarse, dispara un evento para que se actualicen todas sus vistas.
Esta secuencia de operaciones no existe en la web.La vista no tiene ningún control (en el lado del servidor) de las interacciones del usuario.Como mucho, se puede decir que la vista genera una "respuesta".La interacción del usuario en el cliente, se convierte en mensajes enviados a un servidor web que, a su vez, lo envía a PHP.En ningún caso el "interfaz de usuario" envía nada a la "vista".Quién ha originado el mensaje, y quién debe procesarlo, requiere un sistema de enrutado.Además, una vez encontrada la ruta, a diferencia de el caso de photoshop (la vista de una imagen es la imagen), la vista es responsable de recrear *todo* el interfaz de usuario.Eso puede incluir recrear objetos completamente ajenos al modelo asociado a la vista (en el caso más simple, cabeceras, pies, menús, etc,etc).

Como segundo ejemplo, y, sobre todo, con el peso de javascript a la hora de generar interfaces de usuario, cosas como los web services, SOAP, REST, etc, a mí me parece muy evidente que el desarrollo web se podría basar en el paradigma cliente-servidor (cosa que ya lo es, al fin y al cabo..navegador vs servidor web), que no es necesariamente igual a MVC.
Y, por poner otra posibilidad, una implementación de MVC con vista generada en el cliente, es la base del desarrollo de ActiveX.Pero, para hacer esto, la integración de PHP y Javascript tendría que ser mucho mayor, y la programación se haría orientada a componentes, aunque cada uno de esos componentes sea una estructura MVC (esto seria muy bonito...De hecho, existe..Quien esté interesado, que vea los ficheros htc para internet explorer)

Sé que muchas de estas cosas se consideran herejía hoy en día..Pero afortunadamente ya se ven signos de que el paradigma está cambiando.Personalmente, no creo que MVC tal y como está planteado hoy en día, sea un paradigma buenísimo.Pero no dejo de reconocer que sirve para orientar a programadores recién llegados, a los que al menos se les fuerza a estructurar su código en unidades diferentes a "fichero".
  #12 (permalink)  
Antiguo 29/07/2013, 07:17
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 11 meses
Puntos: 8
Respuesta: mvc desde cero

Gracias a todos por sus respuestas... creo que ahora estoy mas enredado :S... seguiré leyendo y practicando para aprender este paradigma.

Etiquetas: cero, mvc
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 16:03.