Qual'è la tua opinione (sic) di questo modello in particolare per quanto riguarda l'attuazione CodeIgniters?
Non posso dire molto sull'implementazione di CI. In genere evito AR per tutto tranne le applicazioni più semplici. Se la tabella non corrisponde a 1: 1 per i miei oggetti aziendali, non utilizzo AR, poiché rende difficile la modellazione dell'applicazione. Inoltre non mi piace l'idea di abbinare il livello di persistenza ai miei oggetti di business. È una violazione della separazione delle preoccupazioni. Perché un prodotto dovrebbe sapere come si salva? lettura Futher: http://kore-nordmann.de/blog/why_active_record_sucks.html
EDITdopo il commento di @kemp, ho guardato la Guida CI utente per vedere come sono implementati AR:
Come si può vedere in PoEAA un AR è un oggetto che avvolge una riga in una tabella di database o in una vista, incapsula l'accesso al database e aggiunge la logica di dominio su quei dati. Questo non è quello che CI fa però. Fornisce solo un'API per creare query. Ho capito che esiste una classe Model che estende AR e che può essere utilizzata per creare oggetti di business, ma che sarebbe più simile a Row Data Gateway quindi. Controlla PHPActiveRecord per un'implementazione alternativa.
Ci sono problemi di velocità con il wrapping del database in un altro livello?
Ogni volta che si astraggono o si avvolgono qualcosa in qualcos'altro, si può essere certi che questo ha un impatto sulle prestazioni rispetto a farlo crudo. La domanda è, è accettabile per la tua applicazione. L'unico modo per scoprirlo è il benchmarking. Letture consigliate: https://stackoverflow.com/search?q=orm+slow
EDIT In caso di semplice API costruzione di query di CI, mi piacerebbe assumere l'impatto sulle prestazioni di essere trascurabile.L'assemblaggio delle query richiederà logicamente un po 'di tempo in più rispetto all'utilizzo di una stringa SQL raw per l'adattatore db, ma solo microsecondi. E tu per quanto ho visto nella Guida dell'utente, puoi anche memorizzare le stringhe di query. Ma in caso di dubbio, punto di riferimento.
Fa (logico) diventare caotico quando si tenta di creare query molto complesse?
dipende dalla vostra query. Ho visto query SQL piuttosto complicate. Quelli non diventano più belli se espressi attraverso un'interfaccia OO. A seconda dell'API, potresti trovare query che non sarai in grado di esprimere attraverso di essa. Ma poi di nuovo, questo dipende dalle tue domande.
I vantaggi fuori dagli svantaggi?
Questo solo tu puoi decidere. Se rende facile la tua vita di programmatore, perché no? Se soddisfa le tue esigenze di programmazione, sì. Ruby on Rails è costruito pesantemente su questo (AR) concetto, quindi non può essere poi così male (anche se potremmo discutere anche su questo :))
+1 I vantaggi di AR superano di gran lunga i negativi ... –
Mi stavo chiedendo anche questo. Risposta fantastica, grazie ragazzo! – mdgrech