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<?php
// Controller posts_mostrar.php
include "models/posts.php";
//include "models/comments.php";
include "views/mostrar_posts.php";
// registro de la tabla posts para id = id_post
// funcion get_posts_from_id_post() definida en el modelo incluido
$vars['registro'] = get_posts_from_id_post($id);
// lo que quiera en $varsp[]
// paso las variables locales en un arreglo a la clase que renderiza las vistas
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<!-- View -->
<html>
<head>
<title><?php $nombre_post; ?>
</head>
<body>
<h1><?php $nombre_post; ?></h1>
<div class="post_body">
<?php $desarrollo; ?>
</div>
<!-- suponiendo tambien usas el modelo Comentarios -->
<table>
<?php foreach ($comments as $comment): ?>
<tr>
<td>
<?= $comment['nombre_usuario]; ?>
</td>
</tr>
<tr>
<td>
<?= $comment['comentario]; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>