Ho svolto ricerche approfondite e sono bloccato. Sto scrivendo un modulo Drupal che usa una classe che ho creato. Questa classe è un Singleton classico: deve essere istanziata una sola volta, dal momento che sta assemblando una serie di dati da un database. Si noti che il mio potenziale Singleton non aggiornerà alcun dato nel database: leggerà solo dai dati esistenti. Inoltre, tieni presente che i processi esterni al contesto del mio programma possono aggiornare i dati.
So che la risposta da portare a casa qui è "usa Iniezione di dipendenza". Tuttavia, non posso usare Dependency Injection - Drupal usa gli hook e questi hook accettano determinati parametri. Ad esempio, non posso (a mia conoscenza) inserire un oggetto in questo modo.
Vorrei sottolineare che anche i test sono una mia preoccupazione (anche se testare il mio modulo in Drupal ha avuto una sua serie di sfide). Tuttavia, sono disposto ad accettare che un Singleton possa essere il minore di due mali qui.
Ecco un esempio:
function mymod_block_view($var) {
//$var is required by drupal
$obj = new Object()
....
}
function mymod_block_info() {
...
$obj = new Object()
}
Le mie opzioni al momento sono di usare una variabile globale (non ideale) o un Singleton (secondo la mia ricerca, anche non ideale, ma potrebbe essere la mia unica opzione). Ho altre opzioni oltre a dichiarare un nuovo oggetto variabile all'interno di ogni funzione?