Ho bisogno di capire una best practice per l'utilizzo efficiente dei modelli in Zend Framework.Come ottimizzare i modelli in Zend Framework?
Attualmente, ho classi che estendono Zend_Db_Table_Abstract
che gestiscono le mie query sulla rispettiva tabella di ogni classe.
Quando ho bisogno di accedere a dire 5 di quelle tabelle da un controller, mi trovo a creare 5 nuove istanze di ogni specifico oggetto Zend_Db_Table
. Questo è davvero inefficace.
Ho pensato di implementare un modello di fabbrica per creare nuove istanze (o fornire una copia statica esistente) ma non sono sicuro. È questo il modo migliore per farlo?
Qual è il modo corretto di gestire i modelli garantendo velocità senza consumare risorse eccessive? Il carico pigro dovrebbe entrare in gioco qui?
[EDIT] Per fare un esempio, ho una classe che uso per gestire ottenere informazioni su una località da una query di ricerca prima e bisogno di questi oggetti al fine di analizzare la query:
// Initialize database object
$this->dbLocations = new Model_Locations;
$this->dbStates = new Model_States;
$this->dbZipcodes = new Model_Zipcodes;
$this->dbLookup = new Model_Lookup;
In un'altra classe, potrei aver bisogno di accedere nuovamente a quei modelli, quindi ripeto il codice precedente. Reinizializzare in modo sostanziale gli oggetti che potrebbe essere statico/singleton.
La tua domanda è abbastanza salata, puoi mostrare un esempio di codice in cui crei istanze di 5 classi di tabelle e descrivi ciò che ti serve. – markus
Capisco le tue preoccupazioni ma non le seguo davvero. Direi che creare più istanze di una classe e soprattutto una classe astratta è una cosa certa in OOP. Interrogare questo modello di tabella è un po 'come mettere in discussione l'OOP o l'ereditarietà del tutto per me. –
A livello di base, l'utilizzo in questo metodo è accettabile. Ho un "gestore" personalizzato, per mancanza di una parola migliore ", che accetta un oggetto query, analizza le proprietà al suo interno e lo passa a un gestore di posizione che ottiene tutti i dati sulla posizione per quella query, quindi lo passa a un Gestore di dati di marea e gestore di dati meteorologici.In molte fasi di questo, ho bisogno di accedere a varie tabelle e finire per iniziare questi oggetti molto da varie classi.Vedi questo per maggiori informazioni: http://stackoverflow.com/questions/9116838/data-encapsulation-and-data-flow-in-php –