Foros del Web » Programando para Internet » PHP »

php + mvc

Estas en el tema de php + mvc en el foro de PHP en Foros del Web. Hola a todos Estoy recien aprendiendo el patron de diseño Modelo-Vista-Controlador , y tengo algunas dudas En lo que respecta a Modelo("Logica de Negocio") solo ...
  #1 (permalink)  
Antiguo 15/10/2003, 18:43
Avatar de estanislaorc  
Fecha de Ingreso: abril-2003
Ubicación: Peru
Mensajes: 58
Antigüedad: 21 años, 7 meses
Puntos: 0
php + mvc

Hola a todos

Estoy recien aprendiendo el patron de diseño Modelo-Vista-Controlador , y tengo algunas dudas

En lo que respecta a Modelo("Logica de Negocio") solo se basa en la extraccion de data de una BD,archivo,etc o tambien pueden ser funciones como calculo_de_impuestos, reconversion_moneda, cosas que forman la parte logica de la empresa.

Y si es todo, estaria bien mi script siguiendo el patron MVC ?
**archivo:apli_modelo.php**
<?
class Impuesto
{ var $valor ;
var $imp=18;

function costoImp($consumo)
{ $this->valor=$consumo*($this->imp)/100 ;
return $this->valor ;
}

} ?>

**archivo:apli_vista.php**
<? include_once('setup.php');
$smarty->assign('impuesto',$adicional);
$smarty->display('vista.tpl');
?>

**archivo:apli_controler.php**
<? if(isset($_GET["precio"]))
{ include("apli_modelo.php");

$objImp=new Impuesto ;
$precio=$_GET["precio"];
$adicional=$objImp->costoImp($precio);
include("apli_vista.php"); }
?>

Espero su pronta respuesta
Gracias
__________________
Web developer
  #2 (permalink)  
Antiguo 16/10/2003, 02:48
Avatar de vitxo  
Fecha de Ingreso: septiembre-2003
Ubicación: Valencia
Mensajes: 219
Antigüedad: 21 años, 2 meses
Puntos: 0
La movida es que la lógica del negocio manipula el modelo de los datos, para luego generar su vista. Así que todo lo que sea sacar o introducir en la base de datos, o jugar con esos datos pertenece al modelo de la aplicación.
Por ejemplo, tienes un pequeño sistema de identificación en tu web, el usuario introduce su nombre y contraseña. El controlador recibe la acción del usuario mediante la URL y asigna el trabajo a una clase, digamos Identificacion.
Esa clase podría tener un método process() que se conecta a la base de datos y valida el nombre y contraseña recibidos a través del formulario html, de hecho, cualquier acción tendría un método process, llamado por el controlador.
Eso en cuanto al modelo, podrías tener otra clase: VistaIdentificacion, con un método display() que mostrara esos datos + la plantilla.

cómo lo ves?
  #3 (permalink)  
Antiguo 16/10/2003, 03:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Tal como yo entiendo el MVc, el controlador llama a la vista y la vista puede llamar tanto al controlador como al modelo. Por su parte, el controlador tambien puede llamar al modelo. Y creo que es el modelo el que no puede llamar a ninguno de los otros 2.

Es decir, desde mi punto de vista no estaria mal hacer un:
Código PHP:
$smarty->assign('impuesto',$objImp->costoImp($precio)); 
dentro de la vista. El unico problema de esto es que la vista debe conocer al modelo. Y un cambio en el modelo puede implicar un cambio en la vista (en todas las vistas). Pero si lo dejas en el controlador, es el controlador el que debe conocer al modelo, y es el que cambiaria si cambia el modelo. La independencia total no existe, en mi opinion.

Si no tienes problemas con el ingles, podrias revisar www.phppatterns.com (vitxo, no eres el unico fan de harryF ) o darte una vuelta por de foro de "Advanced PHP" de www.sitepointforums.com , donde se debaten tambien este tipo de asuntos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 16/10/2003, 10:12
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Josemi, como me gusta ver que no soy el único que conoce a Harry Fuecks, ni el unico que anda por el Foro de SitePointForums

Como me gustan estos threads. Veamos.

Según YO entiendo el modelo MVC, son las capas superiores las que inicializan y llaman a las capas inferiores, en este caso, como dice Josemi, es la vista la que para crearse, necesita utilizar datos del Modelo, que a su vez los tomará de un DAO. ESto es, dado que en el Modelo MVC, basado en el Web, un usuario puede hacer dos tipos de peticiones, una Vista ( que hará lo que dije recién ) o una Acción ( que efectuará algún cambio en la base de datos a través de un Modelo, y luego redirijirá a una nueva Vista ).

Lo que tengo entendido Yo, de momento con lo que he leido, es que el Controlador en este caso deberia encargarse de lo siguiente :

1) Determinar que es loq ue se pide hacer ( Vista o Acción )
2) Instanciar el Modelo que corresponda
2-bis) Instanciar el DAO necesario para el Modelo?????
3) Instanciar la Vista necesaria ( HTML - XML - WML ) y pasarle el modelo como parámetro
4) DEvolver los contenidos de la vista.

De esta manera, desacoplamos tanto el DAO del Modelo, como el Modelo de la Vista, pudiendolos intercambiar luego sin problemas.

Bueno, espero que te haya servido de algo esta explicación, pero como digo, este tipo de discusiones son muy necesarias por estos foros y bienvenidas sean! si tenés alguna consulta, no dudes en preguntar.

Suerte
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #5 (permalink)  
Antiguo 16/10/2003, 16:36
Avatar de estanislaorc  
Fecha de Ingreso: abril-2003
Ubicación: Peru
Mensajes: 58
Antigüedad: 21 años, 7 meses
Puntos: 0
gracias, por aclarar mis dudas!!

Gracias !!

me ha quedado claro lo del mvc, ahora lo voy ha ponerlo en practica . en el foro recomendado encontre un pequeño ejemplo de Harry F http://<a href="http://wact.sourcefo...CH/?page=8</a>
__________________
Web developer
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 13:12.