Cómo se usa
Esta página cubre todo lo de la lección 7: separar responsabilidades, el ruteador, el punto de entrada único y la estructura de carpetas.
Hay 9 preguntas y 3 ejercicios, con corrección inmediata.
Preguntas
Todavía sin contestar · 9 preguntas
Separar responsabilidades
1. ¿Qué hace el modelo en MVC?
Elegí una opción para verla
El modelo maneja los datos y las reglas: buscar, listar, insertar. No imprime HTML.
2. ¿Qué hace la vista?
Elegí una opción para verla
La vista solo presenta. Si consulta la base o decide reglas, la separación se rompe.
3. ¿Qué diferencia al controlador?
Elegí una opción para verla
El controlador coordina: recibe la petición, llama al modelo, y entrega el resultado a la vista.
El ruteador
4. ¿Qué hace un ruteador?
Elegí una opción para verla
Mira la dirección pedida y despacha al controlador que corresponde. Agregar una página es agregar una ruta.
5. ¿Qué es un front controller (punto de entrada único)?
Elegí una opción para verla
Un único archivo de entrada: todas las peticiones pasan por ahí, y desde ahí se cargan configuración, ruteo y seguridad.
6. ¿Qué ventaja tiene centralizar la seguridad en el punto de entrada?
Elegí una opción para verla
La comprobación de sesión o de permisos va en un solo lugar; con un archivo por pantalla hay que acordarse en todos.
La estructura
7. ¿Qué carpeta debe quedar expuesta al servidor?
Elegí una opción para verla
Solo public/: CSS, JS e imágenes. El código PHP queda fuera del alcance del navegador.
8. ¿Dónde va la lógica de consultas a la base?
Elegí una opción para verla
En los modelos. La vista no consulta y el ruteador solo despacha.
9. ¿Por qué conviene que el código no esté en public/?
Elegí una opción para verla
Para que el servidor web no pueda entregar archivos de código directamente. Es una capa de protección.
Ejercicios de práctica
Ejercicio 1
Escribí un ruteador con match que atienda /, /productos y /ventas, y devuelva 404 para lo demás.
$ruta = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
match ($ruta) {
"/", "/productos" => (new ProductoController())->listar(),
"/ventas" => (new VentaController())->listar(),
default => (http_response_code(404) and print("No encontrado")),
};Ejercicio 2
Explicá la diferencia entre modelo, vista y controlador usando una pantalla del buffet.
El modelo trae los productos de la base; el controlador recibe la petición de «ver catálogo», pide los productos al modelo y elige la vista; la vista muestra la lista con el HTML, sin consultar nada.
Ejercicio 3
¿Dónde pondrías la comprobación de que el usuario está logueado? Justificá.
En el punto de entrada (o en un middleware que se ejecute ahí): así vale para todas las páginas de una vez, en lugar de repetir el if en cada archivo.
Cómo saber si está bien
Si acertaste 7 o más, la lección está firme. La regla que hay que poder repetir: la vista no consulta, el modelo no imprime.
Lo que hay que poder explicar
- Modelo = datos; vista = presentación; controlador = coordina.
- El ruteador despacha cada dirección.
- Un solo punto de entrada centraliza configuración y seguridad.
- Solo
public/se expone.
Licencia. El material de esta página es elaboración propia de Prof Mauro Bobyk —a partir de las fuentes que detalla el pie del sitio— y se publica bajo una licencia Creative Commons BY-NC-SA 4.0.