Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/07/2011, 07:54
Avatar de GatorV
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: Consulta acerca del patron MVC

El patrón MVC es uno de los mejores patrones para separación de capas y responsabilidades en el diseño de Software. Pero recuerda que es a nivel teorico, y que cada capa es teorica, no hay una "interfaz universal", es simplemente una capa, mientras tu separes en esas capas tu aplicación (aún sin usar POO), estas respetando el MVC.

En teoría un ejemplo así de sencillo respeta el MVC:
models/usuarios.php
Código PHP:
Ver original
  1. <?php
  2. function getActiveUsers()
  3. {
  4.         $sQuery = "SELECT * FROM users WHERE active=1";
  5.         return dbQueryFetchAll($sQuery);
  6. }
listaUsuarios.php
Código PHP:
Ver original
  1. // Modelo
  2. require_once('models/usuarios.php');
  3. if (validateUserLoggedIn()) {
  4. // Vista
  5. require_once('views/listausuarios.php');
  6. } else {
  7. redirect('login.php');
  8. }

views/listausuarios.php
Código PHP:
Ver original
  1. <h1>Active Users</h1>
  2. <ul>
  3. <?php foreach (getActiveUsers() as $User) { ?>
  4. <li><?php echo $User['name']; ?></li>
  5. <?php } ?>
  6. </ul>

Al llamar a listaUsuarios.php el Controller (listaUsuarios.php) busca el modelo que va a usar (models/usuarios.php) verifica si hay una sesión, e inyecta el modelo a la vista para que sea rendereado.

Ahora esas 3 capas son teóricas, y si ves no tienen nada de base en el ejemplo que expongo, simplemente es la separación de responsabilidades de cada capa.

Ahora usando POO, aparte de MVC hay varios patrones a tu disposición, uno de ellos que es el mas usado es el del FrontController, que es el encargado de obtener todos los requests de tu aplicación y decidir que modelo/vista cargar en base a los parámetros de entrada.

Dentro de la vista puedes hacer uso de más patrones (como TwoStepView), y del Modelo también, pero como te digo, no hay nada 100% universal, por lo que cada implementación de cada software puede usar un diseño como guste.

Ahora respecto a tus interfaces yo te diría no las uses, mejor concentrate en entender el patrón al 100%, y luego haz uso de más patrones independientes para hacer un buen diseño de tu sistema.

También puedes ver algunos frameworks (Zend, Symfony, Yii, Cake, CI) para que veas su implementación particular de MVC.

Saludos.