Domanda

Oggi al lavoro qualcuno ha cercato di convincermi che:

{$obj->getTableInfo()}

va bene per smarty / mvc / templating perché sta usando un metodo object. Ho sostenuto che, poiché effettua una chiamata al database, non ha posto dove trovarsi e dovrebbe essere nel controller (in realtà non utilizziamo MVC). Ho ragione nella mia comprensione delle separazioni logiche utilizzate in MVC e in generale nel modello? O c'è qualcosa che mi manca?

È stato utile?

Soluzione

Hai ragione. Ha torto.

Le chiamate al database, non importa in quale forma, dovrebbero risiedere nel controller se si desidera eseguire MVC nel modo corretto.

Ovviamente le persone pisciano su tutto ciò che dovrebbe e fanno cose del genere, ma non è il modo corretto.

Altri suggerimenti

Bene, non ci sono "quotazioni ufficiali" regole o altro, ma penso che qualcosa del genere appartenga al controller. Non faccio nulla nel mio codice di visualizzazione tranne le variabili di visualizzazione, niente di più complesso di un se o un foreach -type loop è consentito. Certamente non chiamando funzioni che accedono al database. Tutto ciò dovrebbe essere caricato dal controller, la vista dovrebbe solo decidere se deve essere visualizzato o meno.

Dipende dal suo contesto e portata davvero.

$ obj è il controller o il layer modello? Ciò dovrebbe rispondere se sia o meno valido secondo me.

In risposta alla lettura delle altre risposte.

Il nome delle funzioni in sé lo considera un semplice metodo getter. Può effettuare una chiamata al db tramite un livello controller. Il che direi è ok. Soprattutto se ha usato una qualche forma di memorizzazione nella cache. (ad esempio, il getter è il setter in quanto si desidera memorizzarlo nella cache solo quando viene usato una volta.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top