Io per attenermi ad un modello MVC farei così:
Model
Una classe per ogni elemento che inserisci nel db, che estendono una classe base, chiamiamola Model
Model - Classe base con metodi e proprietà comuni
Recensione - che estende model ma ha metodi/proprietà specifici
Guida - che estende model ma ha metodi/proprietà specifici
Itinerario - che estende model ma ha metodi/proprietà specifici
Puoi anche valutare di usare un ORM per semplificarti la vita.
View
Usa un template manager tipo blade o twig per gestire le view.
Potrai creare blocchi riutilizzabili (tipo header e footer), e contenuti specifici per ogni url.
Poi userai i dati presi dal db per popolare le varie view in maniera dinamica.
Controller
Classi che gesticono le operazioni tra model e view.
In genere si crea un controller per ogni gruppo di operazioni, ma diciamo che ognuno ha le sue idee.
Quanti e quali saranno i controller dipende un po' dalle operazioni che vuoi fare.
Potresti avere per esempio:
Controller per la gestione degli utenti (se il sito prevede di avere utenti loggati)
Controller per l'area admin (se c'è un'area admin)
Controller per visualizzare le notizie
etc.
Inoltre nei moderni framework vengono usati dei cosiddetti Service
I service vengono utilizzati all'interno dei controller per appunto fornire servizi come accesso al database, routing, logging, invio email etc.
Questi solitamente vengono iniettati tramite il costruttore del controller tramite il design pattern chiamato dependency injection. Creandoli separatamente, e non dentro ai controller, si introduce un ulteriore livello di astrazione che ne semplifica l'aggiornamento/modifica.
In alternativa, per capire come è strutturato un framework potresti provare ad utilizzare Laravel.

Rispondi quotando
