2010-02-22 19 views
12

il framework PHP che sto usando (Kohana) ha recentemente implementato l'architettura HMVC. Ho letto che si tratta di un mvc a strati in cui le richieste sono fatte l'una sull'altra. È un po 'come ajax, solo lato server. L'ho applicato un po 'su alcuni esperimenti, ma non posso applicarlo a nessuno dei miei progetti (perché non riesco a trovarne il bisogno). Hai mai usato HMVC in un progetto prima? Come ti ha aiutato?Per cosa posso usare l'architettura HMVC?

+1

+1, di recente sono passato a Kohana da Code Igniter e mi stavo chiedendo la stessa cosa. –

risposta

14

E 'un po' come ajax, appena puramente di server -lato.

Questa è una buona analogia.

HMVC è bello per l'aggiunta di widget alle pagine - bit di contenuto modulari che riutilizzerete in poche pagine. Ad esempio, un widget del carrello. Potresti fare la stessa cosa in diversi modi:

  1. Una biblioteca. Siamo abituati a spostare il codice riutilizzabile da un controller in una libreria. Quindi, dal controller, è possibile caricare i risultati di una chiamata in tale libreria in una variabile di visualizzazione.
  2. Una vista. È possibile caricare una vista (parziale) dalla vista principale. Questa vista parziale potrebbe attirare il contenuto dai modelli. Chiamare i modelli dalle viste non è sempre popolare ma non è necessariamente sbagliato.

Tuttavia, Kohana HMVC ha alcuni vantaggi:

  1. Coerenza - richieste HMVC vengono trattati come richieste HTTP esterni.
  2. Alimentazione: le richieste HMVC hanno le stesse risorse Kohana delle richieste HTTP, inclusi i percorsi.
  3. Pluggability - Quando chiamato da una vista, una richiesta HMVC non ha un accoppiamento tra il controller (che assegna i risultati della libreria a una vista) e un segnaposto di vista. Si tocca solo un file anziché due.

Sto iniziando ad apprezzare il caso di HMVC e la scalabilità con le richieste http collegate da Kiall. La stessa cosa potrebbe essere fatta con CURL. Tuttavia, potrebbe essere più naturale progettare con Kohana HMVC che CURL dall'inizio.

+0

il link all'articolo sopra è buono, ma questo presenta una risposta breve ma concisa. Grazie! – yretuta

8

Bene - Sam de Freyssinet (aka samsoir), uno degli sviluppatori di Kohana, ha recentemente pubblicato un articolo che tratta questa domanda.

http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

Mentre la sua non è l'unico uso per HMVC - Si tratta di uno dei suoi usi più popolari. L'articolo riguarda principalmente la scalabilità (come in, il numero di richieste al secondo) ma la scalabilità del codice (come in, quanto facile/difficile è il codice da mantenere) può essere "risolta" con le stesse idee ..

Hope questo aiuta :)

(Nota a margine - i suoi esempi di codice si basano su cambiamenti personali di Sam a Kohana - vedi la nota alla fine di questo articolo)

+1

In realtà ho appena notato che la data nell'URL è oggi .. buon tempismo :) – Kiall

2

In un progetto semplice non si potrebbe nemmeno trovare un reale utilizzo per il modello architettonico HMVC. E non dovresti nemmeno provarci. Ecco perché:

L'intero punto nel creare un'architettura HMVC era rendere MVC un po 'DRY'er. Uno dei principali vantaggi di HMVC è il riutilizzo del codice.Ti consente di avere frammenti che si ripetono su tutta la tua applicazione (a volte nello stesso punto, altre volte - no).

Se si sta scrivendo come applicazione di prova piccola, non ci saranno frammenti ripetibili. Pertanto, non è necessario utilizzare il potenziale HMVC completo. Ti ritroverai con 1 livello di HMVC, che è MVC standard.

Here you can read the original publication, which introduced HMVC. Nel 2000.