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

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();