2012-09-19 5 views
14

Sto per iniziare a lavorare su un nuovo progetto web utilizzando CakePHP 2.2, avendo precedentemente lavorato principalmente con Zend Framework 1.Perché usare Doctrine al posto del database standard di CakePHP ORM?

A prima vista, mi piace molto il modo in cui CakePHP gestisce i modelli e le tabelle database sottostanti, in particolare per quanto riguarda l'impostazione rapida di relazioni uno-a-molti e molti-a-molti con il minimo sforzo. Francamente sembra una boccata d'aria fresca rispetto a come facevo cose in Zend Framework.

Tuttavia, negli ultimi anni durante l'utilizzo di Zend Framework, avevo cercato di utilizzare Doctrine per fornire le relazioni modello che ZF era piuttosto goffo nel fare. La dottrina mi sembrava molto potente e flessibile.

Così ora mi chiedo, prima di entrare troppo nel mio nuovo progetto CakePHP, dovrei comunque considerare l'utilizzo di Doctrine con la mia nuova scelta di framework? Quali sono i vantaggi e gli svantaggi di Doctrine (non è un gioco di parole!) Rispetto alla funzionalità integrata di ORM e database di CakePHP?

risposta

11

CakePHP funziona meglio se utilizzato nel suo complesso. Nel tuo caso specifico, puoi usare Doctrine invece di ORM di Cake, se vuoi, ma perderai molte funzioni di torta. Per es. il FormHelper fa molte cose "magicamente" come indovinare il tipo di input corretto per i campi ecc. usando lo schema del modello, mostrando automaticamente il messaggio di errore sotto i campi appropriati nei moduli quando la validazione fallisce, ecc.

Come hai commentato non hai Neppure l'esperienza con Doctrine suggerirebbe di aderire all'ORM di CakePHP e cercare l'opzione solo se la trovi inadeguata per le tue esigenze.

+0

Ora ho praticamente completato il porting di un vecchio progetto da ZF1 a CakePHP (perché non mi piace la direzione in cui è andato ZF2) e penso che la tua risposta riassuma la mia esperienza con CakePHP finora. Adoro la sua relativa semplicità nel design e posso vedere che usare Doctrine in questo momento renderebbe ridondante la "magia" di CakePHP. Per ora, continuerò con l'ORM di CakePHP e guarderò Doctrine in futuro. – monkeyhybrid

+2

Le cose sono cambiate molto da quando ho originariamente risposto a questa domanda. L'ORM in CakePHP 3.x è stato riscritto ed è un enorme miglioramento rispetto alle versioni precedenti. Può anche essere usato da solo https://github.com/cakephp/orm Il contrario è anche possibile: usare un'altra libreria ORM con CakePHP, ma personalmente non vedo alcun motivo per farlo. L'ORM di CakePHP 3.x è dannatamente buono. – ADmad

+0

Recentemente ho iniziato a lavorare su un nuovo progetto basato su CakePHP 3.2, e devo dire che l'ORM ha un bell'aspetto! – monkeyhybrid

4

Se avete già lavorato con Dottrina e CakePHP di ORM, si può decidere sulla base dei motivi principali per cambiare:

  • ciò che vi darà una maggiore produttività?
  • Cosa ti darà più manutenibilità?
  • Cosa ti darà meno curva di apprendimento?

Personalmente, sceglierei Doctrine, in base al fatto che è davvero specifico per un problema.

+0

In realtà non ho ancora fatto un lavoro serio con Doctrine e solo una piccola parte con l'ORM di CakePHP, quanto basta per ottenere una funzionalità di base del mio progetto. Personalmente, da quanto ho giocato finora, penso che CakePHP risponda a tutte e tre le tue domande, almeno da quello che ho visto finora. Tuttavia, devo chiedermi se in qualche modo lungo la linea troverò che l'ORM di CakePHP manca di alcune funzionalità offerte da Doctrine. – monkeyhybrid

Problemi correlati