Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/05/2014, 09:15
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: ¿Cómo utilizar una clase y método con ReflectionClass?

Bueno... me da pereza escribir un MVC asi sea simple (lo he hecho y no encuentro que lo hice)... ejemplos debe haber varios en StackFlow

Basicamente tu Index.php es donde descompones la URL para estraer las variables, entre las que tendras:

Cita:
index.php?controlador=posts&accion=mostrar&id_post =45
- controlador
- accion
- parametros (id, etc)

Para esto podrias usar parse_url(), entonces sabiendo eso te diriges a un archivo con ese nombre de controlador (.php) y ejecutas la funcion o metodo definido por accion -- digamos accion() -- y le pasas esos parametros

<< hasta ahi tienes separado en FRONT CONTROLLER de los demas CONTROLLERS


Luego... te falta separar aun las VISTAS y los MODELOS, cierto ? una forma es incluir los modelos en los controladores (en cada uno incluyes los modelos a los que necesitas acceder) y luego en vez de escupir HTML en ese controlador lo que haces es por ejemplo incluir un archivo que solo posee HTML y variables de PHP. Supongamos el controlador que te permite en un blog visualizar una entrada (post) en particular (sigamos con el ejemplo)

Vamos a suponer que el Front_controller incluye a los otros controladores (en vez de hacer otra re-direccion), con lo que las variables locales al FRONT son locales para el CONTROLLER incluido:

Código PHP:
Ver original
  1. <?php
  2. // Controller posts_mostrar.php
  3.  
  4. include "models/posts.php";
  5. //include "models/comments.php";
  6. include "views/mostrar_posts.php";
  7.  
  8. // registro de la tabla posts para id = id_post
  9. // funcion get_posts_from_id_post() definida en el modelo incluido
  10.  
  11. $vars['registro'] = get_posts_from_id_post($id);
  12. // lo que quiera en $varsp[]
  13.  
  14.  
  15. // paso las variables locales en un arreglo a la clase que renderiza las vistas
  16. View::render('vista_muestra_entrada',$vars);

Bueno... te faltan las vistas ahora.... y la clase View que la deberias tambien cargar desde cada vista o desde el controlador si va a usar vistas:

Código PHP:
Ver original
  1. <!-- View -->
  2. <?php extract($vars); ?>
  3. <html>
  4. <head>
  5.    <title><?php $nombre_post; ?>
  6. </head>
  7.  
  8. <body>
  9.  
  10.   <h1><?php $nombre_post; ?></h1>
  11.  
  12.   <div class="post_body">
  13.        <?php $desarrollo; ?>
  14.   </div>
  15.  
  16.     <!-- suponiendo tambien usas el modelo Comentarios -->
  17.     <table>
  18.     <?php foreach ($comments as $comment): ?>
  19.        <tr>
  20.           <td>
  21.             <?= $comment['nombre_usuario]; ?>
  22.           </td>
  23.        </tr>
  24.        
  25.         <tr>
  26.           <td>
  27.             <?= $comment['comentario]; ?>
  28.           </td>
  29.        </tr>
  30.   <?php endforeach; ?>
  31.   </table>
  32.  
  33. </body>
  34.  
  35. </html>
__________________
Salu2!

Última edición por Italico76; 26/05/2014 a las 09:44