Si tratta di un framework MVC?

1

Ho costruito un framework per le mie applicazioni che ha funzionato bene, e ho sempre parlato di questo come MVC. Tuttavia, dopo aver letto un po 'di più su ciò che è un MVC (non che non ho iniziato con, ma ho dato una breve panoramica, e ho guardato altri framework che hanno utilizzato il pattern mvc), e mi ha dato una pausa per pensiero.

La struttura è la seguente:

Il framework ha un bootstrap che carica i file richiesti per il framework e il file di avvio per l'applicazione ( app_bootstrap.php ).

Il file app_bootstrap.php ha tre funzioni.

In primo luogo, crea costanti per il framework da utilizzare (ad esempio, impostazione della connessione al database, configurazione del profilo, percorso url di base e percorsi interni dei file).

In secondo luogo, richiede tutti i file che sarebbero pertinenti all'applicazione, in primo luogo, quelle che ho chiamato classi "modello" che contengono informazioni sul nome e sulla struttura delle tabelle nel database, regole di convalida, associazioni ad altri "modelli" ", ecc. Questi" modelli "estendono una classe astratta che contiene funzioni statiche per la selezione e la creazione di righe dal database, che creeranno istanze di una classe di entità che si occupa della riga, come __get , __has , __set , __unset per il recupero di colonne e associazioni e save e delete per salvare le modifiche di riga al database.

In terzo luogo, chiama le funzioni all'interno del file router.php che configurerà i collegamenti per i dati ambientali (come l'url, lo stato di accesso dell'utente, ssl, ajax, esistenza dei cookie, ecc.) alle classi "controller".

Il framework esegue quindi una funzione di esecuzione entro router.php che passerà attraverso le regole dei dati ambientali definite e determinerà quale "controller" caricare, se ne trova uno, sarà require del file (dall'applicazione / directory dei controller, generando un errore se non trovato) e chiama la classe con la funzione del punto di ingresso appropriata (l'indice non è definito) o genera un errore 404.

Una volta avviato il "controller", non ci sono più funzioni che il framework eseguirà, e una volta che il "controller" è terminato, il programma terminerà (a meno che la profilazione non sia stata attivata, dove emetterà i dati , quindi fine). Ma il framework fornisce funzioni al "controller", e per nominarne alcune, una classe input (per gestire tutti gli input, come $_GET , $_POST o $_SERVER variabili, cookie, user agent, remote ip, etc, oltre a fornire un'interfaccia igienizzata), una classe output (per intestazioni, cookie, messaggi di stato, ecc.), una classe queryBuilder (per la creazione di query sul database nella funzionalità evento che non può essere fatto all'interno del "modello"), e una classe view (per l'analisi delle variabili in una vista per il rendering e il ritorno al client).

Ma dopo aver letto qualche altra informazione su MVC, sembra che router.php agisca in modo simile a un Controller, il "controller" si comporta come il modello, il "modello" si comporta come un ORM e la vista è praticamente corretta . Quindi, questo framework dovrebbe ancora essere classificato come MVC, oppure si adatta a un altro modello (se esiste un tale pattern)?

    
posta topherg 22.04.2013 - 18:55
fonte

1 risposta

4

Il tuo router è il cosiddetto Front Controller ; gestisce l'elaborazione anticipata della richiesta e la consegna ai tuoi Controller, che da una vista di 10k piedi sembra un vero controller MVC. Molti sviluppatori sfruttano lo stesso modello di oggetti utilizzato da O / RM, ma sembra che le classi "Entity" siano il vero modello. Ad ogni modo lo si guarda, mi sembra un'implementazione MVC valida.

Una cosa da notare sui modelli di software ... In generale, il modello fornisce una linea guida ma non un'implementazione rigorosa. È sempre soggetto all'interpretazione dello sviluppatore. Simile al lavoro originale di Alexander su cui si basavano gli schemi del software. I modelli di Alexander descrivevano soluzioni generali a un problema comune negli spazi di costruzione, ma la realizzazione effettiva di quelle soluzioni era soggetta all'estetica del costruttore.

    
risposta data 22.04.2013 - 19:11
fonte

Leggi altre domande sui tag