Poi per un singleton e' necessario solo UN metodo statico: quello che restituisce un'istanza della classe, il resto dei metodi e delle proprieta' non ha senso che siano statici
Ma come faccio ad usare proprità NON statiche all'interno di un metodo statico?
...non potrei scrivere questo:
codice:
self::$instancia=new mysqli(self::$host, self::$nombre, self::$pw, self::$dbNome);
all'interno della classe ModelloPrototipo ho questi 3 metodi:
codice:
 public function __construct() {
        self::$instancia = Db::getDBC();
    }
    
   static function getDBC() {
        return self::$instancia;
    }
    protected function ejecutaQuery($sql) {
        try {
            return self::$instancia->query($sql);
        } catch (Exception $e) {
            die('Connección error [' . self::$instancia->error . ']');
        }
    }
Potrei eliminare la classe Db ma l'ho fatto proprio per separare la "logica" di connessione al db da quello che erano i metodi per gestire le operazioni sul db stesso.

I metodi all'interno della classe ModelloPrototipo mi permettono di effettuare delle operazioni del genere all'interno dei controller:
codice:
$modello=$this->getModello("nome_tabella");
$modello->aggiorna($arrayDati,$arrayCondizioni);
.
.
.
.
$modello->nuovo($arrayDatiNuovoRecord)