self pointe vers la classe dans laquelle il est écrit.
Donc, si votre méthode getInstance est dans un nom de classe MyClass, la ligne suivante:
self::$_instance = new self();
Fera la même chose que:
self::$_instance = new MyClass();
Edit: quelques informations supplémentaires, après les commentaires.
Si vous avez deux classes qui s'étendent l'une l'autre, vous avez deux situations: 
getInstance est défini dans la classe enfant 
getInstance est défini dans la classe parente 
La première situation ressemblerait à ceci (j'ai supprimé tout le code non nécessaire, pour cet exemple - vous devrez le rajouter pour obtenir le comportement singleton) *:
class MyParentClass {
}
class MyChildClass extends MyParentClass {
    public static function getInstance() {
        return new self();
    }
}
$a = MyChildClass::getInstance();
var_dump($a);
Ici, vous obtiendrez:
object(MyChildClass)#1 (0) { } 
Ce qui veut selfdireMyChildClass - c'est-à-dire la classe dans laquelle il est écrit.
Pour la deuxième situation, le code ressemblerait à ceci:
class MyParentClass {
    public static function getInstance() {
        return new self();
    }
}
class MyChildClass extends MyParentClass {
}
$a = MyChildClass::getInstance();
var_dump($a);
Et vous obtiendrez ce genre de sortie:
object(MyParentClass)#1 (0) { }
Ce qui signifie selfsignifie MyParentClass- c'est-à-dire ici aussi, la classe dans laquelle il est écrit .
Avec PHP <5.3, que «la classe dans laquelle elle est écrite» est importante - et peut parfois causer des problèmes.
C'est pourquoi PHP 5.3 introduit une nouvelle utilisation du staticmot - clé: il peut maintenant être utilisé exactement là où nous l'avons utilisé selfdans ces exemples:
class MyParentClass {
    public static function getInstance() {
        return new static();
    }
}
class MyChildClass extends MyParentClass {
}
$a = MyChildClass::getInstance();
var_dump($a);
Mais, avec staticau lieu de self, vous obtiendrez maintenant:
object(MyChildClass)#1 (0) { } 
Ce qui signifie que cette staticsorte de pointage vers la classe utilisée (nous avons utiliséMyChildClass::getInstance() ), et non celle dans laquelle elle est écrite.
Bien sûr, le comportement de selfn'a pas été changé, pour ne pas casser les applications existantes - PHP 5.3 vient d'ajouter un nouveau comportement, recyclant lestatic mot clé.
Et, en parlant de PHP 5.3, vous voudrez peut-être jeter un œil à la page Late Static Bindings du manuel PHP.