Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Modelo Vista Controlador: MAS ABSTRACTO

Estas en el tema de Modelo Vista Controlador: MAS ABSTRACTO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, he visto muchos temas y artículos del modelo vista controlador en php, pero, ¿que hay del nivel de abstracción del que tanto ...
  #1 (permalink)  
Antiguo 24/03/2010, 21:13
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 15 años
Puntos: 0
Modelo Vista Controlador: MAS ABSTRACTO

Hola a todos,

he visto muchos temas y artículos del modelo vista controlador en php, pero, ¿que hay del nivel de abstracción del que tanto se habla en ingeniería de software?, ¿como aplicarlo?. Es decir, todos plantean una vista que muestra datos, un controlador que recibe peticiones, verifica los input, decide que se pide hacer y llama al modelo para luego devolver la vista y por último un modelo que interactua con la capa de datos basada en los parámetros suministrados. PERO, ¿que hay de la abstracción para la creación de entidades lógicas? en todos los ejemplos veo que se devuelven array's con el contenido de lo que busca el usuario, pero, ¿la abstracción no debería ser generar objetos de una determinada clase para retornar? (lo que pasa es que lo veo inoficioso tomar un arrary de la bd para convertir en conjunto de objetos que luego tendrán que ser retornados como array o xml para ser leído en el html).
  #2 (permalink)  
Antiguo 25/03/2010, 05:58
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 10 meses
Puntos: 32
Respuesta: Modelo Vista Controlador: MAS ABSTRACTO

Que tal Jotamarios

Bueno, ahí está la abstracción, en cada capa del MVC, ya que cada una debería ser independiente de lo que haga la otra

En particular, que los ejemplos retornen array's, es particular de los ejemplos. En Zend lo que hacemos en los desarrollos es tomar toda la información que se recibe desde la bd en arrays, convertirlos en objetos y luego retonar colecciones de objetos.

Sí, es más trabajo, pero mantienes la unidad básica de "objetos", y bien esto se podría resolver con un ORM e independizarte del tema. Que exista constante traducción "array's - objetos" no es culpa del MVC, es de la diferencia de modelos Entidad Relación y Objetos.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 25/03/2010 a las 07:53 Razón: error redacción
  #3 (permalink)  
Antiguo 25/03/2010, 07:59
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 15 años
Puntos: 0
Respuesta: Modelo Vista Controlador: MAS ABSTRACTO

Comprendo. Ahora, cuando te sientas a desarrollar de esa manera es cuando te enteras que le das vuelta al asunto pasando de array a objeto y de objeto a array. Lo que realmente me puse a pensar (porque si le veo ventajas a mantener esa abstracción con los objetos), es el hecho de que en mi desarrollo pienso tener todo como objetos pero se me presentan "inconvenientes" cuando por ejemplo tengo un objeto ...digamos "banco", si estoy en una vista de creación de bancos, este tendría por orden que crear un objeto banco y luego enviar este a la capa del modelo para convertirlo en query e insertarlo en la BD. El problema viene en que yo asumia un constructor que tomara nombre e ID, pero si en la BD se controla el ID con un autoincrement, no podría desde un inicio mandarle dicho ID. Y la identificación de objetos se haría imprecisa.
  #4 (permalink)  
Antiguo 25/03/2010, 08:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Modelo Vista Controlador: MAS ABSTRACTO

En ese caso cambia tu diseño y haz el id un parámetro opcional que se pueda actualizar después de creado, así al insertar en tu bd obtienes el id autoincrementado y actualizas tu objeto.

Saludos.
  #5 (permalink)  
Antiguo 25/03/2010, 13:35
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 15 años
Puntos: 0
Respuesta: Modelo Vista Controlador: MAS ABSTRACTO

Me he desviado un poco de la pregunta inicial....

Yo quisiera saber si esta es una opción valida:

Capa vista: html

Capa Controlador: php que recibe peticiones, controla los input, determina acciones y responde.

Capa modelo: Objetos para abstracción. Objetos funcionales para generar la lógica(helpers) y objetos de bajo nivel(acceso directo a datos).

Me parece que en el modelo es donde más se puede divagar en diferentes formas de realizar el desarrollo, y es donde me genera la inquietud porque uno bien podría idearse la forma de hacerlo, pero como en todo, debe haber unas mejores practicas.
  #6 (permalink)  
Antiguo 25/03/2010, 14:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Modelo Vista Controlador: MAS ABSTRACTO

De hecho vas por buen camino, busca el concepto: "fat models, thin controllers", la idea es que la capa del modelo es donde este toda la logica de tu aplicación, los modelos deben de ser simples y solo como una capa de I/O
  #7 (permalink)  
Antiguo 25/03/2010, 22:49
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Hola jotamarios

El termino abstracción tiene un ámbito muy abarcador. Me imagino que te refieras a la encapsulación de la Programación Orientada a Objetos POO.

Existen métodos y funciones para recuperar tuplas/filas de una bases de datos como objetos directamente.

Depende de la extensión de php5 que utilices:

Si utilizas PDO (PHP Data Objects)

PDOStatement->fetchObject(); — Recupera la siguiente fila y la retorna como un objeto.

Código PHP:
mixed PDOStatement::fetchObject  ([  string $class_name "stdClass"  [,  array $ctor_args  ]] ) 
Incluso este método fetchObject te da la posibilidad que le pases como argumento un string con el nombre del objeto que tú prefieras que te retorne (es decir te retornaría el resource de la base de datos como un objeto con el nombre que le especificaste como argumento). En dicho objeto se almacena el resource de la base de datos, de no pasarle ningún argumento te devolverá el resource en un objeto stdClass.

Si utilizas Mysqli:

mysqli_result->fetch_object();

Código PHP:
object mysqli_result::fetch_object  ([  string $class_name  [,  array $params  ]] ) 
Y si utilizas Mysql:

Código PHP:
object mysql_fetch_object  (  resource $result  [,  string $class_name  [,  array $params  ]] ) 
Las diferencias entre el Modelo Entidad Relación y la Programación Orientada a Objetos en PHP5, se podría solucionar con el uso del patrón Active Record.

Última edición por atrianaster; 27/03/2010 a las 11:03
  #8 (permalink)  
Antiguo 26/03/2010, 09:39
 
Fecha de Ingreso: abril-2009
Mensajes: 196
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: Modelo Vista Controlador: MAS ABSTRACTO

Muchas gracias por sus respuestas. Me aportan mucho.

Etiquetas: controlador, mas, modelo, vistas
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 21:02.