Originariamente inviato da Santino83_02
1) a mio avviso l'uso dell'interfaccia è inutile

2) è inutile di conseguenza la classe base astratta. Anche perchè costringi le tue classi singleton ad estendere una classe, quindi ti precludi il fatto che non possano più estenderne altre, da cui tanti problemi
Fammi capire la relazione.

Se ho una classe che eredita da una astratta che problema c'è ? al massimo dovrà mettere i metodi della classe astratta pur senza implementarli. Ma non viene certo preclusa la possibilità di ereditare.

Originariamente inviato da Santino83_02
3) se è singleton è singleton, $_instanceOfClass non deve essere trattata come un array quindi scrivere _instanceOfClass[ .. ] è sbagliato, self::$_instanceOfClass[ get_called_class() ] anche è sbagliato

Codice PHP:


class ClasseFiglia{

private static 
$_instance=null;

private function 
__construct(){ } //col costruttore privato non può essere istanziata fuori dalla classe

public static function getInstance(){

if(!
self::$_instance)
  
self::$_instance = new self();

return 
self::$_instance;

}

public function 
sayHello(){

echo 
"hello world";

}


da cui l'utilizzo

Codice PHP:

$c 
ClasseFiglia::getInstance();

$c->sayHello(); 
Ma se devi scrivere un codice come questo non fai prima ad abbandonare la programmazione OOP per tornare a quella procedurale ?
Poniamo che ho 10 classi singleton. Cosa devo replicare il pattern 10 volte ? E se per caso devo fare una modifica cosa devo ripeterla 10 volte con il rischio di dimenticarmene una ?

Sul serio non capisco. Se la logica della programmazione OOP è quella di avere del codice modulare e scalabile non riesco a capire il nesso nel dover codificare rigidamente delle istruzioni dentro a un metodo
replicandolo tot volte.