Il modello per la separazione di codice html e php che io utilizzo è MCV.
Model
Controller
Viewer
Applicato anche nella programmazione classica (diciamo).
Per model si intendono tutte quelle attività che coinvolgono il DB, per controller tutte quelle attività di controllo e coordinamento degli altri due elementi (logiche di business), nel viewer si ha la creazione della pagina
Applicare il modello significa suddividere il tuo codice fra i tre elementi per cui, in un ambiente asincrono come il web, le richieste dell'utente vengono intercettate da una funzione del Controller che esegue delle verifiche. In seguito il controller può invocare un metodo del model per richiedere un aggiornamento del DB. Il model a sua volta in base a come vanno le cose invoca una notifica del controller, che fatti i suoi controlli decide come procedere e tipicamente seleziona una view ovvero la pagina da visualizzare. La view a sua volta può invocare un accesso ai dati da parte del model in modo da caricare i dati a lei necessari e quindi procede alla visualizzazione.
Se fai attenzione potrai notare all'interno della tua pagina che questi tre elementi sono presenti, magari si tratta di organizzare un po' il codice. Se poi vuoi li puoi separare in più file, se ti vuoi sbizzarrire li puoi inncapsulare in clasi, se vuoi esagerare ti costruisci un framework completo.
Ti posto un esempio tra qualche minuto con gli elementi in una pagina sola. Comunque MCV non è lunico modello esistente, ce ne sono altri, ma io uso questo.