La prima cosa da stabilire è esattamente ciò che devi fare, per decidere se un framework e / o MVC (o altro modello di progettazione) potrebbero essere di beneficio.
I framework sono lì per fornire una piattaforma coerente per lo sviluppo, fornendo di solito soluzioni a requisiti di programmazione comuni (come interazione con il database, creazione e validazione di moduli, autenticazione dell'utente ecc.)
Per PHP almeno il modello di progettazione MVC / HMVC tende a dominare i principali framework disponibili (ad es. Zend , CakePHP , CodeIgniter ecc.) Ma ci sono molti diversi modelli di progettazione che si potrebbero usare.
MVC è così popolare perché offre un modo consolidato e compreso di separare la modellazione dei dati e la logica di elaborazione dal livello di visualizzazione / presentazione (qualcosa che è considerato desiderabile per produrre applicazioni robuste e scalabili).
È importante notare (e come è stato espresso da @Marjan Venema in un commento alla risposta di @ ElYusubov) che MVC, MVP, MVVM e gli altri modelli MV x sono (almeno in principio) tutti lo stesso 'modello di progettazione'.
Modelli di design tipicamente diversi servono tutti (spesso sottilmente) a scopi diversi e in diversi casi sono stati sviluppati pensando a un linguaggio specifico. Tuttavia, un vero "modello di progettazione" non è una regola rigida e veloce per la programmazione ed è in realtà più una comprensione filosofica / idealogica dell'implementazione di un programma, dei requisiti di progettazione e delle funzioni logiche.
La ricerca è il modo migliore per scoprire diversi principi di programmazione e buone pratiche, ecco alcuni link di Wikipedia per iniziare:
In pratica non c'è nulla che ti impedisca di implementare il tuo 'modello', l'IMO il modo migliore è imparare facendo, per me almeno non ho compreso appieno il modello MVC fino a quando non ho iniziato a provare a scrivere un sito Web che lo utilizzava.
Una volta compresi alcuni dei concetti di programmazione e le migliori pratiche, è possibile utilizzarli per costruire il proprio sistema per risolvere i problemi specifici che si trovano ad affrontare e per soddisfare le proprie esigenze, sia che si conformi a un "modello" stabilito o meno.
Se non hai una serie specifica di problemi da risolvere, l'apprendimento di uno dei framework comuni è la soluzione migliore.