Salve a tutti, devo scrivere alcune classi singleton ed invece di fare
il copy/paste del classico metodo che restituisce l'istanza , vorrei
che le classi ereditassero il metodo in questione da una classe padre.

Il mio problema sta nel generalizzare il metodo getInstance, mi spiego
meglio

Codice PHP:
class Singleton
  
{
      protected static 
$_instance null;

        public static function 
getInstance()
        {
                if(
self::$_instance === null)
                {
                        
$class_name __CLASS__;//problema 
                        
                        
self::$_instance = new $class_name();

                }
                return 
self::$_instance;
        }

}

class 
myClass extends Singleton
{
    function 
doStuff()
    {
    }


$m = myClass::getInstance();
$m->doStuff();

E qui mi da errore:
Fatal error: Call to undefined method Singleton::doStuff()
Il che significa che $m è di tipo Singleton e non myCLass.

Googlando ho trovato la soluzione

Codice PHP:
  $class_name get_class(self); 
che però non fornisce alcuna stringa in output e mi invia la notice:
Use of undefined constant self - assumed 'self'

Fortunatamente in php 5.3 esiste la funzione get_called_class () ed al momento ho risolto con questa, ma vorrei essere sicuro che la classe funzioni anche su versioni precedenti.

Qualcuno può dirmi come garantire questa retrocompatibilità?

PS spero che php6 migliori in qualche modo la questione ereditarietà perchè così non è affatto semplice... almeno per me che sono abbastanza ignorante di oop


grazie in anticipo