Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/11/2010, 15:00
Avatar de Samie
Samie
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años
Puntos: 2
Información Forma óptima de trabajar con objetos y Model View Controller

Hola gente tengo una duda de alguien que recién comienza a trabajar con PHP orientado a objetos.
Supongamos que tenemos una red social (que imaginación la mía :P) en la que tenemos usuarios y estos pueden tener fotos.
Deberíamos tener sus dos clases respectivas con sus propiedades y métodos.

Ahora imaginemos que el usuario hace login, está dentro.
Tendríamos unos 3 "archivos .php": index.php (intrerfaz gráfica), obtener_usuario.php(controlador) y usuario.php (modelo).

Como queremos seguir lo mejor posible el patrón Modelo Vista Controlador, lo que ocurrirá internamente será algo como:

1- El usuario se conecta a una interfaz gráfica que una de las cosas que hará será saludar al usuario con su nombre y mostrarle sus datos de perfil

2- Los datos del usuario se obtendrán mediante una llamada a un método del controlador, algo así como
Código PHP:
obtener_usuario(); 
3- Este a su vez se encarga de pedirle al modelo los datos mediante las siguientes llamadas:
Código PHP:
obtener_datos_inicio(); 
(que devolvería el nombre, apellido1 y la localización) ,
Código PHP:
obtener_numero_fotos(); 
(que devolvería el número de fotos que ha subido) y con los datos que obtiene crea un objeto de tipo "Usuario"

4- El modelo a su vez en cada una de estas llamadas accede a la base de datos, crea una variable de sesión con el id del usuario y devuelve un array asociativo al controlador(por ejemplo) con los datos a mostrar en la interfaz .

Este es un ejemplo sencillo pero ¿estaría bien el proceso a seguir que he escrito?

¿Que objetivo práctico tendría crear un objeto de tipo usuario (más que el de encapsular todos sus atributos en una misma "cosa") ?
Al fin y al cabo el objeto que creas en ese proceso en el modelo sólo va a perdurar en ese proceso (la persistencia entre distintas páginas la obtenemos con las variables de sesión).

Y por último, según he leido yo, el echo de hacer esto así es para desacoplar la dependencia entre diferentes partes del software, ¿quiere decir esto que si en lugar de que el controlador hiciese la llamada al modelo fuese la propia interfaz sería más dificil de mantener?

La verdad es que aún a pesar de que creo haber entendido los conceptos básicos la estructura general de las operaciones aún no las comprendo bien.

Cualquier sugerencia o mejora será bien recibida
Muchas gracias por vuestra paciencia si habeis llegado a leer hasta aquí.